背景:
工作中经常需要对一串数据进行分割,最简单的办法就是使用正则表达式。
常见符号:
-
\:\后跟一个特殊字符,表示匹配这个字符,例如\$,表示匹配数据中的$。
-
^:^后跟一个特殊字符,出现在一个字符集合时,表示不匹配这个字符,例如[^$],表示匹配数据中的非$。
-
*:匹配前置表达式0次或者多次,等价于{0,},例如(,)*表示匹配数据中的’,’0次或多次。
-
+:匹配前置表达式1次或者多次,等价于{1,},例如(,)+表示匹配数据中的’,’1次或多次。
-
?:匹配前置表达式0次或者1次,等价于{0,1},例如(,)?表示匹配数据中的 ‘,’ 0次或多次。
-
():捕获括号,捕获括号内的任意单个字符,例如(,)表示匹配数据中的 ‘,’存在则返回’,’。
-
{n,m}:n和m都是整数,匹配前面字符至少n次,最多m次。
-
[]:一个字符集合,例如[xyz]匹配“xyza”中的xyz。
-
[^xyz]:一个反向字符集合,例如[^xyz]匹配“xyza”中的a。
-
\d:匹配一个数字,等价于[0-9],例如\d匹配“ABC69”中的数字6。
-
\D:匹配一个非数字,等价于[^0-9],例如\D匹配“ABC69”中的第一个字母A。
-
\s:匹配一个空白字符,例如\s\w*,匹配“foo bar”中的bar。
-
\S:匹配一个非空白符,例如\S\w*,匹配“foo bar”中的foo。
-
\w:匹配一个单字字符(字母、数字或下划线),例如\w,匹配“app”中a,匹配“$20”中的2。
-
\W:匹配一个非单字字符,例如\W,匹配“$2020”中的$。
-
\f:匹配一个换页符。
-
\n:匹配一个换行符。
-
\r:匹配一个回车符。
-
\t:匹配一个水平制表符。
-
\v:匹配一个垂直制表符。
测试结果:
示例数据:$20240101$K1$abc$-009$测试
示例正则:(\$)([^$]+)*\$(\D)(\d)\$([^$]+)*\$(\W)(\d+)*\$([^$]+)*
分割结果如下
var reg = /(\$)([^$]+)*\$(\D)(\d)\$([^$]+)*\$(\W)(\d+)*\$([^$]+)*/;
reg.exec('$20240101$K1$abc$-009$测试');
https://jex.im/regulex/#!flags=&re=%5E(a%7Cb)*%3F%24