下面的正则表达式:
re1=/abc$def/m;
re1.test("abc$def");//显然是false
re1.test("abc\ndef");//仍然是false
re2=/abc^def/m;
re3=/abc$^def/m;
re4=/^abc$^def$/m;
这样的正则表达式是什么意思?
在正则表达式中出现多次$和^ 有作用吗?
如果没有作用为什么也不报错???
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
@wangsquirrel 的答案可能有一些疏漏的地方:摘自:MDN 的 Regular_Expressions:
^与$是特殊字符,如果没有加backslash转义的话,那么他们一定是表示特殊意思的,所以如果你要匹配这个字符本身,请加上转义符:
题主给的例子无法匹配的根本原因是^与$是去匹配一行的开头和结尾,而不是匹配换行符,所以其实是你的正则本身就匹配不上,而不是出错了。
这是我的一点理解,欢迎探讨交流。
正则表达式中 &^只有在结尾和开头有特殊含义,在其余位置指标是他们自己。没有特殊含义!
^脱字字符表示匹配搜索字符中串的开始位置。&恰好相反,表示匹配搜索字符串中结尾位置。m多行匹配模式修正符如 @shizhz 所说。当你有了
/m时,说明你是希望多行匹配的,那么re1.test("abc$def")中的re1应该写成/abc\$def/,无多行匹配的情形,不需要加上/m。而
re1.test("abc\ndef")中的re1则应该写成/abc\n^def/m,因为现在有了\n代表换行,所以你需要用到/m进行多行匹配。而中间的^代表第二行的开始位置。我前几天对正则做了一篇总结,题主不妨一阅:《正则表达式基础》