唯尚空间设计 發表於 2023-3-2 11:32:52

JS中正则表达式全局匹配正斜杠的方法

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">JS中正则表达式全局匹配正斜杠</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">正则表达式</a></li><li><a href="#_lab2_0_1">修饰词:</a></li><li><a href="#_lab2_0_2">换行符</a></li></ul><li><a href="#_label1">补充:正则表达式如何匹配正反斜杠</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_3">反斜杠的麻烦</a></li><li><a href="#_lab2_1_4">执行匹配</a></li></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>JS中正则表达式全局匹配正斜杠</h2>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>正则表达式</h3>
<p style="text-align:center"><img alt="4612d098fa86c3cba14b331691443fc6.png" src="https://img.jbzj.com/file_images/article/202303/2023030211263877.jpg" /></p>
<p>语法:</p>
<p>必须写在两个反斜线之间 / 要匹配的规定/;</p>
<p>列如: var 变量名 = / 要匹配的规定/;</p>
<p>2.开头以 ^ 这个符号开头表示以什么开头</p>
<p>列如:/^1/ 表示以1开头</p>
<p>3、结尾以 $ 符号结束表示以什么结束</p>
<p>列如:/ 0$/ 以0结束</p>
<p>4、正则表达式后面跟字母的:</p>
<p>列如:/ /i; 不区分大小写</p>
<p>列如:/ / g 执行全局匹配</p>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>修饰词:</h3>
<p><strong>i 大小写不敏感 (不区分大小写)</strong></p>
<p><strong>g 全局匹配</strong></p>
<p><strong>m 多 行匹配</strong></p>
<p><strong>5. w </strong></p>
<p><strong>w 反斜杠w的 (w是小写)是匹配字母数字下划线,不包括</strong></p>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>换行符</h3>
<p>W 反斜杠w (w是大写)匹配除了字母数字下划线以外的</p>
<p>包括换行符在内</p>
<p>6、d</p>
<p>d (小写d)代表数字</p>
<p>D (大写)带表非数字</p>
<p>7、{x,Y}</p>
<p>{X,Y}x代表最少能有几个 Y代表最大能有几个;</p>
<p>8、</p>
<p> 代表只能输入0到9的的数字</p>
<p>但是列如:</p>
<p>要匹配的东西: linx</p>
<p>正则式:lin[^ux]x</p>
<p>它是匹配不到linx的 但是可以匹配到lin x;</p>
<p>也就是说中间那一位必须有一个字符哪怕是空格</p>
<p>这里要注意: [^0-9] 中括号里面写^是除掉里面的东西</p>
<p>如果^写在外面则是以什么结尾</p>
<p>9、支持正则表达式的 String 对象的方法</p>
<p>1、search</p>
<p>var str=&quot;hellow word333333&quot;</p>
<p>document.write(str.search(/world/))</p>
<p>它会返回数字 7</p>
<p>2、replace 替换与正则表达式匹配的字符串</p>
<p>replace(&#39;X&#39;,&#39;Y&#39;) X为要替换的内容 Y为将要替换上去的内容</p>
<p>var str=&quot;hellow word&quot;</p>
<p>document.write(str.replace(&#39;word&#39;,&#39;ddd&#39;))</p>
<p>结果输出为:hellow ddd</p>
<p>3、split 把字符串分割为数组</p>
<p>var str=&quot;hellow word333333&quot;</p>
<p>document.write(str.split(&#39;o&#39;))</p>
<p>结果输出:hell,w w,rd333333</p>
<p>4.语法:</p>
<p>正则表达式.test(要效验的值)</p>
<p>正则式可以给了一个变量</p>
<p>要效验的值也可以给了一个变量</p>
<p class="maodian"><a name="_label1"></a></p><h2>补充:正则表达式如何匹配正反斜杠</h2>
<p class="maodian"><a name="_lab2_1_3"></a></p><h3>反斜杠的麻烦</h3>
<p>在早期规定中,正则表达式用反斜杠字符 (&quot;\&quot;) 来表示特殊格式或允许使用特殊字符而不调用它的特殊用法。这就与 Python 在字符串中的那些起相同作用的相同字符产生了冲突。</p>
<p>让我们举例说明,你想写一个 RE 以匹配字符串 &quot;\section&quot;,可能是在一个 LATEX 文件查找。为了要在程序代码中判断,首先要写出想要匹配的字符串。接下来你需要在所有反斜杠和其它元字符前加反斜杠来取消其特殊意义,结果要匹配的字符串就成了&quot;\\section&quot;。 当把这个字符串传递给re.compile()时必须还是&quot;\\section&quot;。然而,作为Python的字符串实值(string literals)来表示的话,&quot;\\section&quot;中两个反斜杠还要再次取消特殊意义,最后结果就变成了&quot;\\\\section&quot;。</p>
<table><tbody><tr><td>字符</td><td>阶段</td></tr><tr><td>\section</td><td>要匹配的字符串</td></tr><tr><td>\\section</td><td>为 re.compile 取消反斜杠的特殊意义</td></tr><tr><td>&quot;\\\\section&quot;</td><td>为&quot;\\section&quot;的字符串实值(string literals)取消反斜杠的特殊意义</td></tr></tbody></table>
<p>简单地说,<strong>为了匹配一个反斜杠,不得不在 RE 字符串中写 &#39;\\\\&#39;,因为正则表达式中必须是 &quot;\\&quot;,而每个反斜杠在常规的 Python 字符串实值中必须表示成 &quot;\\&quot;。在 REs 中反斜杠的这个重复特性会导致大量重复的反斜杠,而且所生成的字符串也很难懂</strong>。</p>
<p>解决的办法就是为正则表达式使用 Python 的 raw 字符串表示;在字符串前加个 &quot;r&quot; 反斜杠就不会被任何特殊方式处理,所以 r&quot;\n&quot; 就是包含&quot;\&quot; 和 &quot;n&quot; 的两个字符,而 &quot;\n&quot; 则是一个字符,表示一个换行。正则表达式通常在 Python 代码中都是用这种 raw 字符串表示。</p>
<table><tbody><tr><td>常规字符串</td><td>Raw 字符串</td></tr><tr><td>&quot;ab*&quot;</td><td>r&quot;ab*&quot;</td></tr><tr><td>&quot;\\\\section&quot;</td><td>r&quot;\\section&quot;</td></tr><tr><td>&quot;\\w+\\s+\\1&quot;</td><td>r&quot;\w+\s+\1&quot;</td></tr></tbody></table>
<p class="maodian"><a name="_lab2_1_4"></a></p><h3>执行匹配</h3>
<p>一旦你有了已经编译了的正则表达式的对象,你要用它做什么呢?`RegexObject` 实例有一些方法和属性。这里只显示了最重要的几个,如果要看完整的列表请查阅 Python Library Reference</p>
<table><tbody><tr><td>方法/属性</td><td>作用</td></tr><tr><td>match()</td><td>决定 RE 是否在字符串刚开始的位置匹配</td></tr><tr><td>search()</td><td>扫描字符串,找到这个 RE 匹配的位置</td></tr><tr><td>findall()</td><td>找到 RE 匹配的所有子串,并把它们作为一个列表返回</td></tr><tr><td>finditer()</td><td>找到 RE 匹配的所有子串,并把它们作为一个迭代器返回</td></tr></tbody></table>
<p>如果没有匹配到的话,match() 和 search() 将返回 None。如果成功的话,就会返回一个 `MatchObject` 实例,其中有这次匹配的信息:它是从哪里开始和结束,它所匹配的子串等等。</p>
<p></p>
頁: [1]
查看完整版本: JS中正则表达式全局匹配正斜杠的方法