2010-07-23 81 views

回答

4

正在使用的正则表达式不允许使用字母;这与你在标题中报道的内容相反。

/[a-z]/i就足够了,如果你只想接受字母。如果你想允许像à,è或ç这样的字母,那么你应该扩展正则表达式; /[\p{L}]/ui应该可以处理所有的Unicode字母。

1

/[^ A-Za-z] * /将匹配除字母之外的所有内容。你不需要指定数字或标点符号。

+0

虽然你说的是真的,但它并不回答这个问题。看kiamlaluno的答案。 – 2010-07-23 02:29:05

+0

其实我对kurrel做的是对的。但是在我问这个问题和在我自己的代码执行过程中,这是一个错误。 - 2对我来说,我的歉意。我的原始正则表达式实际上按需要工作。 – atwellpub 2010-07-23 02:45:29

+0

kiamlaluno的第二个版本对于额外字符来说肯定​​是比较灵活的,但是如果你使用if语句来匹配你不想要的东西,那么你将会寻找负面信息而不是正面信息。 – kurreltheraven 2010-07-23 03:09:34

0

在字符类里面,^意思不是。 所以你在寻找不是的一封信。 你想要的东西像

[A-Za-z]+ 
0

你也可以使用简写\w一个“单词字符”(字母数字加_)。当然,一些正则表达式引擎可能会有不同的支持,但如果它是PCRE,它应该可以工作。 See here(在标题“转义序列”下)。

2
#^[^a-z]+$#i 

你的代码是正确的,你只需要^和$。所以这意味着全部字符从开始到结束都不允许外部字母表。在这里,负面比赛比正面比赛更受欢迎。

+0

它的意思是这样的:if (preg_match('#^[^a-z]+$#i', $string) echo 'outside alphabet found'; iroel 2010-07-23 05:47:24

相关问题