特殊字符及含义
| 字符 | 含义 | 示例 |
|---|---|---|
| * | 匹配前一个表达式 0 次或多次。等价于 {0,} | 例如,/bo*/ 会匹配 "A ghost boooooed" 中的 'booooo' 和 "A bird warbled" 中的 'b',但是在 "A goat grunted" 中不会匹配任何内容。 |
| + | 匹配前面一个表达式 1 次或者多次。等价于 {1,}。 | 例如,/a+/ 会匹配 "candy" 中的 'a' 和 "caaaaaaandy" 中所有的 'a',但是在 "cndy" 中不会匹配任何内容。 |
| ? | 匹配前面一个表达式 0 次或者 1 次。等价于 {0,1}。 | 例如,/e?le?/ 匹配 "angel" 中的 'el'、"angle" 中的 'le' 以及 "oslo' 中的 'l'。如果紧跟在任何量词 *、 +、? 或 {} 的后面,将会使量词变为非贪婪(匹配尽量少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。例如,对 "123abc" 使用 /\d+/ 将会匹配 "123",而使用 /\d+?/ 则只会匹配到 "1"。还用于先行断言中,如本表的 x(?=y) 和 x(?!y) 条目所述。 |
| . | (小数点)默认匹配除换行符之外的任何单个字符。 | 例如,/.n/ 将会匹配 "nay, an apple is on the tree" 中的 'an' 和 'on',但是不会匹配 'nay'。如果 s ("dotAll") 标志位被设为 true,它也会匹配换行符。 |
| \w | 匹配一个单字字符(字母、数字或者下划线)。等价于 [A-Za-z0-9_]。 | 例如, /\w/ 匹配 "apple," 中的 'a',"$5.28,"中的 '5' 和 "3D." 中的 '3'。 |
| \W | 匹配一个非单字字符。等价于 [^A-Za-z0-9_]。 | 例如, /\W/ 或者 /[^A-Za-z0-9_]/ 匹配 "50%." 中的 '%'。 |
| \d | 匹配一个数字。等价于[0-9]。 | 例如, /\d/ 或者 /[0-9]/ 匹配"B2 is the suite number."中的'2'。 |
| \D | 匹配一个非数字字符。等价于[^0-9]。 | 例如, /\D/ 或者 /[^0-9]/ 匹配"B2 is the suite number."中的'B' 。 |
(括号)、[中括号]、{大括号}的区别小结
圆括号()是组,主要应用在限制多选结构的范围/分组/捕获文本/环视/特殊模式处理
示例:
- (abc|bcd|cde),表示这一段是abc、bcd、cde三者之一均可,顺序也必须一致
- (abc)?,表示这一组要么一起出现,要么不出现,出现则按此组内的顺序出现
- (?:abc)表示找到这样abc这样一组,但不记录,不保存到x取第几个括号所匹配到的项,比如:(aaa)(bbb)(ccc)(?:ddd)(eee),可以用3则获取到了(ccc)匹配到的内容,而$4则获取的是由(eee)匹配到的内容,因为前一对括号没有保存变量
- a(?=bbb) 顺序环视 表示a后面必须紧跟3个连续的b
- (?i:xxxx) 不区分大小写 (?s:.*) 跨行匹配.可以匹配回车符
中括号[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。
大括号{}一般用来表示匹配的长度 {1, 9}
输入内容匹配空格
/^[^\s]*$/
常用场景
身份证
邮箱
手机号
/^1[3456789]\d{9}$/
格式化千分位
function numFormat(num) {
var c = (num.toString().indexOf ('.') !== -1)
? num.toLocaleString()
: num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
return c;
}
版本号
/^(?!0\.0\.0)(\d|[1-9]\d+)\.(\d|[1-9]\d+)\.(\d|[1-9]\d+)$/