用户:
ฅ智慧编程猫ฅ----(和平工作室室长)查看:2 回复:5 评论:2 创建时间:2023-01-17T11:32:07
----------------------------------------------------------分割线------------------------------------------------------------
- -
- -
- -
- -
这应该是第一次发教程()
不说了,直接开始)
经过采访)正则的作用包括——匹配、替换字符,紫色注释![]()
很多种编程语言也会用到正则,大多是语法不相同
注:本教程内容是正则表达式的部分语法
/*
正则表达式(RegExp)
特别字符 描述
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,
$ 则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
例: var a = /b$/ "b在最后"
a.test('ab') ~>true
匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。等价于 {0,}
* 例: var a = /b* / "b不出现"
a.test('a') ~>true
var a = /b* / "b出现不计数量次数"
a.test('abbbbbbbbbb') ~>true
匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。{1,}
+ 例: var a = /b+/ "b必须出现"
a.test('b') ~>true
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
( ) 例: var a = /(ba)$/ "ba必须在一起出现,而且在最后"
a.test('bbba') ~>true
匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
例: var a = /./ "除换行符之外的任何字符(通常是占位)"
. a.test('bbba') ~>true
var a = /(a).$/ "a+任何一个字符(而且在最后)"
a.test('ac') ~>true
标记一个中括号表达式的开始和结束位置。要匹配这些字符,请使用 \[ 和 \]。
例: var a = /[1-9]]/ "1-9的数字(是一个单字符,只匹配一个)"
[ ] a.test('123') ~>true
ar a = /[a-z]]/ "a-z的字母"
a.test('abc') ~>true
匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
? 例: var a = /b?/ "b不出现或出现一次"
a.test('ba') ~>true
将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如,'n' 匹配字符 'n'。
'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
\ 例: var a = /\$/ "$符"
a.test('$a') ~>true
匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,
表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,请使用 \^。
例: var a = /^a/ "a在最前面"
^ a.test('abcd') ~>true
var a = /[^a]/ "不能出现a"
a.test('bbc') ~>true
标记限定符表达式的开始和结束位置。要匹配要匹配这些字符,请使用 \{ 和 \}。
例: var a = /a{2}/ "a连续出现2次"
{ a.test('aacd') ~>true
[n[,[m]]] var a = /(ab){2,}/ "ab连续出现2次以上"
} a.test('abababc') ~>true
var a = /(w){2,}5/ "w连续出现2次到5次"
a.test('www.') ~>true
指明两项之间的一个选择。要匹配 |,请使用 \|。
| 例: var a = /a|b/ "a或b出现(在每个单字符中,首先考虑前面的a,不行再考虑后面的b)"
a.test('aacd') ~>true
知识点
* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。
例:
var a = /<.*>/
var b ='<1><2>'
a.exec(b) ~><1><2>
//转换后
var a = /<.*?>/
var b ='<1><2>'
a.exec(b) ~><1>
拓展
格式: \+数字
如: var a = /([a-z])([a-z])\2\1/
var b ='waaw'
a.exec(b) ~>waaw(虽然实际是waaw,w,a)
解释:
匹配长度: 4
前两个字符是任意的,如: aw,_y,21.j2
\1表示: 假如前两个字符是aw,那\1表示aw中的第1个字符,就是a。
\n也一样。(n表示一个数)
前面是aw,后面按照顺序,就是aw(前边的字符2位)w(\1)a(\2)
大家应该懂了()
换个格式: ([a-z1-9A-Z_]可以表示: \d)
如果是/(\d)(\d)(\d)\1\3\2\2/
前三个是abc
abcacbb符合
你可以自己试试哪些文本可以匹配这些:
1. /([a-b])([1-4])([a2-4]\2\2\3)/
2. /^start([a-e1-2_])([ang])([a|b])([em])\2\2\3{5}\4\4\4\1{2,3}(end)\1.$/
第二个是不是很困难()()
元字符 描述
匹配一个单词边界,也就是指单词和空格间的位置。
例: var a = /er\b/ "er的后面不能有字符"
\b a.test('ereaa') ~>false
var a = /\ber\b/ "er的前后面不能有字符"
a.test('er aa') ~>true
匹配非单词边界。
例: var a = /ny\B/ "ny的后面一定得有字符"
\B a.test('ereaa') ~>true
var a = /\Ber\B/ "er的前后面都得有字符"
a.test('ver') ~>false
匹配由 x 指明的控制字符。
\cx 例: \cM 匹配一个 Control-M 或回车符。
x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
匹配一个数字字符。等价于 [0-9]。
例: var a = /\d\d/ "匹配2个数字"
\d a.test('12') ~>true
var a = /\d{10}/ "匹配10个数字"
a.test('123456789a') ~>false
匹配一个非数字字符。等价于 [^0-9]。
\D 例: var a = /\D\D\D/ "不匹配3个数字"
a.test('123') ~>false
匹配一个换页符。等价于 \x0c 和 \cL。
\f 例: var a = /\f/ "匹配换页符"
a.test('123\f456') ~>true
匹配一个换行符。等价于 \x0a 和 \cJ。
\n 例: var a = /\n/ "匹配换行符"
a.test('1\n2') ~>true
匹配一个回车符。等价于 \x0d 和 \cM。
\r 例: var a = /\r/ "匹配回车符"
a.test('\rabc') ~>true
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
例: var a = /\s/ "匹配空白字符"
\s a.test(' ') ~>true
var a = /\s/ "匹配空白字符"
a.test('\r\t\n') ~>true
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\S 例: var a = /\S/ "匹配非空白字符"
a.test('\n') ~>false
匹配一个制表符。等价于 \x09 和 \cI。
\t 例: var a = /\t/ "匹配制表符"
a.test('123 \t') ~>true
匹配一个垂直制表符。等价于 \x0b 和 \cK。
\v 例: var a = /\v/ "匹配空白字符"
a.test('a \vb \vc') ~>true
匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
例: var a = /\w/ "匹配字母、数字、下划线"
\w a.test('Ab3_') ~>true
var a = /\w/ "匹配字母、数字、下划线"
a.test(',..') ~>false
匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。
\W 例: var a = /\W/ "不匹配字母、数字、下划线"
a.test('Ab3_') ~>false
*/
注:此教程为作者收集和实例,无抄袭
喜欢本教程可去作者主页点个关注吧))()