嗨我在Silex路线中有一个变量,我们只允许使用字母数字值
->assert('hash','\w+')
我想在变量中允许一个点,但是我编辑这个正则表达式的努力失败了。非常感谢,谢谢!
答案 0 :(得分:7)
答案 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.]+')