正则表达式:拉丁字母除外

时间:2012-05-10 06:05:27

标签: php regex

1)如何在正则表达式中说:只有在没有字母的情况下才增加匹配计数器?

我想出了这个:

"/^[^a-zA-Z]+$/"

它似乎有用,但我不明白为什么"/^[^a-zA-Z]+/""/[^a-zA-Z]+$/"有效时无效?

2)这是什么意思?:"/[a-zA-Z]+/"我认为这意味着只有当所有元素都在a-z或A-Z范围内时,匹配计数器才会增加。但测试表明我错了。还尝试了这个"/^[a-zA-Z][a-zA-Z]+/",但这也为“aa11”提供了1。

提前致谢

2 个答案:

答案 0 :(得分:5)

您发布的唯一正确的正则表达式是/^[^a-zA-Z]+$/。其余的都是错的。

分别需要^$anchor匹配字符串的开头和结尾。

  • /^[^a-zA-Z]+/匹配aaa111,因为没有字符串结束锚。
  • /[^a-zA-Z]+$/匹配111aaa,因为没有字符串开头的锚点。
  • /[a-zA-Z]+/匹配111aaa111,因为没有字符串的开始或结束锚。如果字符串中有任何字母,则匹配。

答案 1 :(得分:1)

我个人喜欢使用/^[:alpha:]+$/ 你用稀释计启动正则表达式,这可能是#^[:alpha:]+$#也适用的任何东西。 ^是输入的开头,$是结束。 +用于匹配1个或更多。 tutorial/info