正则表达式

  • \d :匹配一个数字

  • \w : 匹配任意一个字母或数字

  • . : 可以匹配任意字符串

  • * : 可以匹配任意个字符(包括0个)

  • +: 至少一个字符

  • ? : 表示0个或1个字符

  • {n} :表示n个字符

  • {n-m} : 表示n-m个字符

  • [ ] :表示范围

  • [0-9a-zA-Z\_] : 可以匹配一个数字、字母或者下划线

  • [0-9a-zA-Z\_]+: 可以匹配至少由一个数字、字母或者下划线组成的字符串

  • [0-9a-zA-Z_KaTeX parse error: Can't use function '\]' in math mode at position 1: \̲]̲\[0-9a-zA-Z\_\_]* : 可以匹配由数字、字母或者下划线,后接任意个由一个数字、字母或者下划线、$组成的字符串

RegExp

JS有2种方式创建一个正则表达式。

第一种方式是直接通过/正则表达式/写出来。

第二种 是通过new RegExp(‘正则表达式’)创建一个RegExp对象。

注意

因为第二种的写法问题,所以每个\ 需要转义,也就是 \\

<script>
function test(){
var node = document.getElementById("validate").value;
var regStr = /^[0-9a-zA-Z]{3,8}\s*\d[3-8]*$/;
var regStr2 = new RegExp('^[0-9a-zA-Z]{3,8}\\s*\\d[3-8]*$');
console.log(regStr2.test(node));
}
</script>
<input type="text" placeholder="请输入" id="validate" />
<button  onclick="test()">检测</button>

分组

除了简单地判断是否匹配外,正则表达式还可以用来提取分组 ,用 ()

<script>
function test(){
var node = document.getElementById("validate").value;
var regStr = /^(\d{3})-(\d{3,8})$/;
var regStr2 = new RegExp('^(\\d{3})-(\\d{3,8})$');
console.log(regStr2.exec(node));
}
</script>
<input type="text" placeholder="请输入" id="validate" />
<button  onclick="test()">检测</button>
  • 如果正则表达式中定义了组,就可以在RegExp对象上用exec()方法提取出子串来。

  • exec()方法在匹配成功后会返回一个Array,第一个元素为正则表达式匹配到的整个字符串,后面的元素则表示匹配成功的子串。

  • exec()方法在匹配失败后会返回null

贪婪匹配

由于 正则表达式默认使用贪婪匹配模式,因此会造成一些问题。比如

var res = /^(\d+)(0*)$/;
res.exec('102300');        //['102300','102300','']

由于\d+采用贪婪匹配模式,所以会匹配到后面的0,所以加上\d+?代表使用非贪婪匹配模式

var res = /^(\d+?)(0*)$/;
res.exec('102300');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值