猫史档案馆


【正则表达式】教程

用户:ฅ智慧编程猫ฅ----(和平工作室室长)ฅ智慧编程猫ฅ----(和平工作室室长)查看:2 回复:5 评论:2 创建时间:2023-01-17T11:32:07


----------------------------------------------------------分割线------------------------------------------------------------

-                                                                                                                                                                                    -

-                                                                                                                                                                                    -

-                                                                                                                                                                                    -

-                                                                                                                                                                                    -

这应该是第一次发教程()

不说了,直接开始)

经过采访)正则的作用包括——匹配、替换字符,紫色注释emotion_doge

很多种编程语言也会用到正则,大多是语法不相同

注:本教程内容是正则表达式的部分语法

/*
正则表达式(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

*/

注:此教程为作者收集和实例,无抄袭

喜欢本教程可去作者主页点个关注吧))()


回复

上一页1 页 / 共 1下一页
ฅ智慧编程猫ฅ----(和平工作室室长)ฅ智慧编程猫ฅ----(和平工作室室长)

ddd

点赞0


评论


卑微OIer卑微OIer

ddd

点赞0


评论


白白的寒日白白的寒日

。。。

点赞0


评论


SunSetSunSet

考三级的时候 正则表达式差点把我搞崩溃 操作题居然还出了一道 结果没做出来。。。。。。

点赞2


评论


ฅ智慧编程猫ฅ----(和平工作室室长)ฅ智慧编程猫ฅ----(和平工作室室长)

喵d))

点赞0


评论