var regex = new RegExp(‘xyz‘, ‘i‘); var regex = new RegExp(/xyz/i); var regex = new RegExp(/xyz/, ‘i‘); var regex = /xyz/i;
在es6中,RegExp构造函数允许第一个参数为正则表达式时,第二个为修饰符,覆盖正则表达式中的修饰符。
match()
replace()
search()
split()
在es6中,新增了一个u修饰符,为了处理码点大于\uFFFF的Unicode字符(也就是说,会正确处理四个字节的UTF-16编码);\uD83D\uDC2A是一个字符,但是es5不支持四个字节的UTF-16,会将其识别成两个字符,导致第二行代码可以正确匹配到;加了u修饰符之后,es6会将其识别成一个字符。
/^\uD83D/u.test(‘\uD83D\uDC2A‘) // false /^\uD83D/.test(‘\uD83D\uDC2A‘) // true
var s = ‘??‘; /^.$/.test(s) // false /^.$/u.test(s) // true
/\u{61}/.test(‘a‘) // false /\u{61}/u.test(‘a‘) // true /\u{20BB7}/u.test(‘??‘) // true
/a{2}/.test(‘aa‘) // true /a{2}/u.test(‘aa‘) // true /??{2}/.test(‘????‘) // false /??{2}/u.test(‘????‘) // true
/^\S$/.test(‘??‘) // false /^\S$/u.test(‘??‘) // true
/[a-z]/i.test(‘\u212A‘) // false /[a-z]/iu.test(‘\u212A‘) // true
/x(?=y)/ x只有在y前面才匹配
/\d+(?=%)/ 只匹配百分号之前的数字
/x(?!y)/ x只有不在y前面才匹配
/\d+(?!%)/ 只匹配不在百分号之前的数字
/\d+(?=%)/.exec(‘100% of US presidents have been male‘) // ["100"] /\d+(?!%)/.exec(‘that’s all 44 of them‘) // ["44"]
/(?<=y)x/ x只有在y后面才匹配
/(?<=\$)\d+/ 只匹配美元符号之后的数字
/(?<!y)x/ x只有不在y后面才匹配
/(?<!\$)\d+/ 只匹配不在美元符号后面的数字
/(?<=\$)\d+/.exec(‘Benjamin Franklin is on the $100 bill‘) // ["100"] /(?<!\$)\d+/.exec(‘it’s is worth about €90‘) // ["90"]
/\p{Script=Greek}/u 指定匹配一个希腊字母
\p{UnicodePropertyName=UnicodePropertyValue} 指定属性名和属性值
\p{UnicodePropertyName} \p{UnicodePropertyValue} // 匹配所有空格 \p{White_Space} // 匹配各种文字的所有字母,等同于 Unicode 版的 \w [\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}] // 匹配各种文字的所有非字母的字符,等同于 Unicode 版的 \W [^\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}] // 匹配 Emoji /\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu // 匹配所有的箭头字符 const regexArrows = /^\p{Block=Arrows}+$/u; regexArrows.test(‘←↑→↓↔?↖↗↘↙?⇐⇑⇒⇓⇔???????‘) // true
const RE_DATE = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/; const matchObj = RE_DATE.exec(‘1999-12-31‘); const year = matchObj.groups.year; // 1999 const month = matchObj.groups.month; // 12 const day = matchObj.groups.day; // 31
原文:https://www.cnblogs.com/britney/p/11307268.html