示例:C0753.0177.202303300002)
匹配不少于两个点的表达式
let regA = /.*\..*\.(\w+|\d+)/;
regA.test('A1.4322.123') //true
regA.test('A1.43.22.123') //true
=============
个人重点记忆:
* : 等价于 {0,}
? : 等价于 {0,1}
+ : 等价于 {1,}
. :点,匹配任意字符
正文部分:
RegExp (Regular Expression)
以下正则表达式等价:
var re = new RgExp("\w+");
var re = /\w+/;
正则表达式,RegExp, exec, test, match, matchAll, replace, search, split exec 返回匹配的数据;test返回true或false; eg: /^A/.test(fruit); 使用正则 /^A/ 选择 不是以‘A’开头的水果
/abc/能且只能匹配 “abc”
[aA] 表示字母 a 或 A
使用特殊字符: /ab*c/ *的意思是前一项出现零次或多次
断言(Assertions)表示一个匹配在某些条件下发生。分为先行、后行和条件表达式。
- 1.^ 匹配输入的开头。 eg: /^A/ 匹配字符开头的A
- 2.$ 匹配输入的结束。 eg: /t$/ 匹配以t结尾的
- 3.\b 匹配一个单词的边界。eg: /\bm/ 匹配m开头的 eg: /oon\b/ 匹配“oon”结尾的
- 4.\B 匹配非单词边界。 eg: /ye\B/ 匹配 "possibly yesterday"中"ye"
其他断言:(?条件)
- 1.x(?=y) 先行断言。 x 被 y 跟随时匹配 x。
- 2.x(?!y) 先行否定断言。 x没有被紧随,匹配x。 eg: /\d+(?!.)/ 数字后面没有跟随小数点时匹配。 对于/\d+(?!.)/.exec(3.141),匹配‘141’而不是‘3’。
- 3.(?<=y)x 后行断言。 x 跟随 y 的情况下匹配 x。
- 4.(?<!y)x 后行否定断言。 x 不跟随 y 时匹配 x。 eg: /(?<!-)\d+/.exec(3) ,“3”得到匹配。eg: /(?<!-)\d+/.exec(-3)的结果无匹配,这是由于数字之前有 - 符号。
字符类 区分不同类型的字符,例如区分字母和数字。
-
[a-c] 匹配a,b,c eg: [\w-] 与 [A-Za-z0-9_-] 相同
-
[^a-c] 一个否定或补充的字符类。
-
. 匹配除行终止符之外的任何单个字符。 eg:
/.y/
在“yes make my day”中匹配“my”和“ay”,而不是“yes”在字符内,与文字点匹配。
-
\d 匹配任何数字,相当于[0-9]。
-
\D 匹配任何非数字。 eg:
/\D/
或者/[^0-9]/
匹配“B2 is the suite number”中的“B”。 -
\w 字母数字字符。相当于
[A-Za-z0-9_]
。 匹配拉丁字母中的任何字母数字字符,下划线。 -
\W 匹配非字母数字字符。 相当于
[^A-Za-z0-9_]
。 -
\s 匹配单个空白字符,包括空格、制表符、换页符、换行符和其他 Unicode 空格。相当于
[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
。例如,/\s\w*/
匹配“foo bar”中的“bar”。 -
\S 匹配除空格以外的单个字符。
-
\t,\r, \n, \v, \f, [\b] 分别匹配水平制表符,回车符,换行符,垂直制表符,换页符,退格键。
-
...
-
\ 指示应特殊处理或“转义”后面的字符。它表现为两种方式之一。 通常按字面处理的字符。eg:
/b/
匹配字符“b”。通过在“b”前面放置反斜杠,即使用/\b/
,字符变得特殊以表示匹配单词边界。 通常被特殊对待的字符。eg:/a*/
示匹配 0 个或多个“a”。 eg:/a\*/
匹配“a*”。 备注: 搜索\的时候需转义,写成 /\\/。 -
x|y 匹配x或y。eg:
/green|red/
匹配“green apple”中的“green”和“red apple”中的“red”。 备注:析取是指定“一组选择”的另一种方式,但它不是字符类。eg:[abc]
在功能上等同于(?:a|b|c)
。
组和范围 区分
字符集 | 含义 |
---|---|
x|y |
匹配 "x" 或 "y" 任意一个字符。例如, |
[xyz] |
字符集。 匹配任何一个包含的字符。您可以使用连字符来指定字符范围,但如果连字符显示为方括号中的第一个或最后一个字符,则它将被视为作为普通字符包含在字符集中的文字连字符。也可以在字符集中包含字符类。 例如, 例如, 例如, |
|
一个否定的或被补充的字符集。也就是说,它匹配任何没有包含在括号中的字符。可以通过使用连字符来指定字符范围,但是如果连字符作为方括号中的第一个或最后一个字符出现,那么它将被视为作为普通字符包含在字符集中。例如,[^abc] 和 [^a-c] 一样。它们最初匹配“bacon”中的“o”和“chop”中的“h”。 备注: ^ 字符也可以表示 输入的起始 |
(x) |
捕获组:匹配 x 并记住匹配项。例如,/(foo)/匹配并记住“foo bar”中的“foo” 正则表达式可以有多个捕获组。结果,匹配通常在数组中捕获的组,该数组的成员与捕获组中左括号的顺序相同。这通常只是捕获组本身的顺序。当捕获组被嵌套时,这一点非常重要。使用结果元素的索引 ( 捕获组会带来性能损失。如果不需要收回匹配的子字符串,请选择非捕获括号 (见下面)。
|