-
对全局匹配来说,
str的match方法返回所有匹配的值组成的数组(如果match不到匹配的,返回null), 而reg的exec方法一次只返回一个匹配的值。 参考文档:正则里exec跟match的区别
但是
match在reg为全局匹配时,无法获取捕获组的值,exec可以获取。
判断输入框里是否有除数字以外的字符时,因为输入框里的
value可能是这种格式'123a'、'123'’、123、'a123',用Number和parseInt需要考虑的情况比较多,用正则表达式来判断比较简单。const reg = /\D/上述
reg表示除数字外的任意字符, 注意正则表达式后面不要加g, 因为exec的全局匹配不是真正的全局匹配,比如/\d/g.exec('1abc23d5')会首先返回1,运行第二次返回2,依次检索到最后一个并返回5,这个时候 再次运行就会返回null,而如果不加g的话,就会一直返回匹配的第一个,这样只要有匹配的就会把匹配的第一个值返回,而不会出现返回null的情况reg.test(value)不管value是字符串类型还是数字类型,只要其中含有除数字以外的字符,就返回true,上述方法相当于
reg.exec(value) !== null从一个字符串中取出某一部分有以下几种方法。
假设有一个字符串str, 要取出中括号中的内容,并将其拼接在一起:1
const str = '【哈哈】随便几个字【名字】';
方法1:
1
const result = str.replace(/【(.*)】.*【(.*)】/, '$2:$1'); // "名字:哈哈"
方法2:
1
2
3const reg = /【(.*)】.*【(.*)】/;
const matchs = str.match(reg); // ["【哈哈】随便几个字【名字】", "哈哈", "名字"]
const result = `${matchs[2]}: ${matchs[1]}`; // "名字:哈哈"方法3:
1
2
3const reg = /【(.*)】.*【(.*)】/;
const matchs = reg.exec(str); // ["【哈哈】随便几个字【名字】", "哈哈", "名字"]
const result = `${matchs[2]}: ${matchs[1]}`; // "名字:哈哈"这里要注意,对于汉字,匹配的时候不能使用\w,因为\w只匹配字母数字和下划线