JS 浅析正则表达式

做数据的校验,就离不开正则表达式,现在网上常用的正则表达式都很全,很多都是开箱即用,非常方便和快捷,但是偶尔也会遇到那种很特殊的正则校验,如果能清楚的明白正则的校验规则,那么任何时候,面对任何需求,我们都会很轻松,从容而又优雅的写出所匹配的正则表达式,从此告别盲目的搜索!

举个栗子:

想限制输入内容为汉字、数字、字母、中英文百分号(%和%)、中英文冒号(:)等其他特殊字符。

核心正则表达式:

/^[\u4E00-\u9FA5a-zA-Z0-9\::%%]*$/

关键点说明‌:
  • \u4E00-\u9FA5:所有汉字
  • a-zA-Z0-9:字母和数字
  • 冒号:英文:\u003A)和中文\uFF1A
  • 百分号:英文%\u0025)和中文\uFF05
注意:
  1. Unicode精准匹配

    • 中文字符和标点需显式声明Unicode编码(如\uFF08匹配中文左括号)。
    • 避免使用.\w等宽泛符号,防止误匹配。
  2. 符号范围

    • 英文标点‌:直接使用字符(如()%)。
    • 中文标点‌:需用Unicode编码(如对应\uFF05)。
  3. 空值处理

    • 正则表达式末尾用*允许空字符串(如^[...]*$)。
    • 若强制至少一个字符,改为+(如^[...]+$)。

示例代码1:输入框实时过滤

HTML

<input type="text" 
       oninput="this.value=this.value.replace(/[^\u4E00-\u9FA5a-zA-Z0-9\::%%]/g, '')">



  • 使用oninput事件实时替换非法字符为空字符串,支持粘贴和输入。

 

JS

function validateInput(value) {
  return /^[\u4E00-\u9FA5a-zA-Z0-9\::%%]+$/.test(value);
}
  • 返回true表示合法输入,false表示包含非法字符。

 

完整示例:

<input type="text" id="restrictedInput" 
       oninput="this.value=this.value.replace(/[^\u4E00-\u9FA5a-zA-Z0-9\::%%]/g, '')">
<button onclick="submitForm()">提交</button>

<script>
function submitForm() {
  const input = document.getElementById("restrictedInput").value;
  if (!/^[\u4E00-\u9FA5a-zA-Z0-9\::%%]+$/.test(input)) {
    alert("输入包含非法字符!");
    return false;
  }
  // 通过验证后执行提交逻辑
  console.log("合法输入:", input);
}
</script>

看懂了基础规则,是不是非常简单~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aotman_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值