正则表达式:匹配字符串中字符组合
在 JavaScript 中,正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法,以及 String 的 match、matchAll、replace、search 和 split 方法。本章介绍 JavaScript 正则表达式。
1、创建
javascript
var re = /ab+c/;
var re = new RegExp("ab+c");
2、编写
|----------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
| \w | 匹配一个单字字符(字母、数字或者下划线)。等价于 [A-Za-z0-9_]
。 例如,/\w/
匹配 "apple," 中的 'a',"$5.28,"中的 '5' 和 "3D." 中的 '3'。 |
| \W | 匹配一个非单字字符。等价于 [^A-Za-z0-9_]
。 例如,/\W/
或者 /[^A-Za-z0-9_]/
匹配 "50%." 中的 '%'。 |
|--------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
| (x) | 括号被称为捕获括号。 |
| (?:x) | 非捕获括号,不会将该分组的匹配结果保存到内存中,从而提高正则表达式的性能和效率。 /(?:foo){1,2}/,
如果使用非捕获括号,则 {1,2}
会应用于整个 'foo' 单词。 /foo{1,2}/
,{1,2}
将只应用于 'foo' 的最后一个字符 'o' |
3、实例
^:表示匹配字符串的开始位置
([0]|[1-9][0-9]*):
匹配整个非负整数
[0]
:匹配单个字符 0
。
[1-9][0-9]*
:首先匹配一个非零数字([1-9]
),然后跟零个或多个数字([0-9]*
)。
*
:表示前面的字符(这里是 [0-9]
)可以出现零次或多次。
$
:表示匹配字符串的结束位置
.test(val)
:如果字符串 val
符合正则表达式的规则,.test(val)
方法将返回 true
;否则,返回 false
。
javascript
validatorScore(val) {
// 匹配任何形式的非负整数
if ((/^([0]|[1-9][0-9]*)$/u).test(val) && val <= 999) {
return true
} else {
return false
}
},
javascript
it.idCardNo = it.idCardNo.replace(/^(.{6})(?:\d+)(.{2})$/, '$1**********$2')
-----> "123456789012345678" -> "123456**********78"
$1:插入第一个捕获组的内容,即身份证号码的前6位(.{6})
**********:插入10个星号,用于替换中间的数字。
$2:插入第三个捕获组的内容,即身份证号码的最后2位(.{2})
javascript
/^[A-Za-z0-9]{0,20}$/ -----> 0到20个字符(只包含字母和数字)
/^[0-9-]+$/ ----->只包含数字和-