【发布时间】:2019-02-11 16:06:13
【问题描述】:
我尝试过滤不包含“垃圾邮件”一词的字符串。 我使用来自here的正则表达式!
但我不明白为什么我需要在表达式开头使用符号 ^。我知道它标志着正则表达式的开始,但我不明白为什么没有 ^ 在我的情况下它不起作用?
UPD。下面的所有答案都非常有用。 现在完全清楚了。谢谢!
【问题讨论】:
-
因为没有它,字符串的最后一个字符将单独匹配模式,例如
spam中的m(或spam中的am,或spam中的pam)。您需要确保spam不会出现在字符串中的任何地方,而不是让被测子字符串的开头向前跟踪。 -
很容易看出,没有
^的正则表达式匹配字符串中的任何单个字符。 -
如果对您有帮助,请考虑接受答案(左侧的绿色勾号)。
-
在很多情况下不需要它,因为许多验证任务都是使用仅针对正则表达式一次测试输入字符串的方法执行的。但是,这是最佳实践,因为正则表达式可能与搜索所有出现的方法一起使用。
标签: regex