正则表达式允许字母数字和点

时间:2014-02-12 18:43:02

标签: php regex

嗨我在Silex路线中有一个变量,我们只允许使用字母数字值

->assert('hash','\w+')

我想在变量中允许一个点,但是我编辑这个正则表达式的努力失败了。非常感谢,谢谢!

3 个答案:

答案 0 :(得分:7)

尝试使用character class[…]),如下所示:

[\w.]+

例如:

->assert('hash','[\w.]+')

答案 1 :(得分:7)

尝试

->assert('hash', '[a-zA-Z0-9.]+')

为什么不[\w.]

您将问题标记为PHP,因此我认为this manual适用。它在那里读取

\w  
    any "word" character

  

“单词”字符是任何字母或数字或下划线字符,即任何可以成为Perl“单词”一部分的字符。字母和数字的定义由PCRE的字符表控制,如果发生特定于语言环境的匹配,则可能会有所不同。例如,在“fr”(法语)语言环境中,一些大于128的字符代码用于重音字母,并且这些字符代码由\ w匹配。

因此,毕竟\w可能与äöüß相匹配......你不知道。

当它读取散列时,您可能还想尝试

->assert('hash', '[a-fA-F0-9.]+')

只接受十六进制数字和.而不接受G或Z或......

答案 2 :(得分:2)

我不知道assert()的内部,但使用char类:

->assert('hash','[\w.]+')