前端js正则\p的使用, 全局标志g的问题

javascript正则\p的使用

    • 正则表达式\p语法元素
    • 使用方式
    • 遇见问题
    • 设置全局标志g
    • 参考链接

正则表达式\p语法元素

元字符 含义
\p{L} 所有字母3
\p{N} 所有数字,类似于 \d 4
[\p{N}\p{L}] 所有数字和所有字母,类似于 \w 4
\P{L} 不是字母,等价于 [^\p{L}]
\P{N} 不是数字,等价于 [^\p{N}]

使用方式

var reg1 = /\p{L}/u;
var reg2 = new RegExp(/\p{L}\p{Z}\p{N}/, 'u');

遇见问题

在firefox浏览器上,下面正则会报错,建议替换规则

var a = /\p{L}\p{N}\p{Z}/u;

设置全局标志g

如果正则表达式设置了全局标志,test() 的执行会改变正则表达式   lastIndex属性。
连续的执行test()方法,后续的执行将会从 lastIndex 处开始匹配字符串,
(exec() 同样改变正则本身的 lastIndex属性值).
var regex = /foo/g;

// regex.lastIndex is at 0
regex.test('foo'); // true

// regex.lastIndex is now at 3
regex.test('foo'); // false

// 第一次和第二次的结果不一致。和预期结果一致不一样

参考链接

  1. javascript - 正则表达式匹配非英文字符?
  2. 维基百科-正则表达式介绍

你可能感兴趣的:(前端)