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

Acy*_*yra 3 php regex

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

->assert('hash','\w+')
Run Code Online (Sandbox Code Playgroud)

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

p.s*_*w.g 7

尝试使用字符类([…]),如下所示:

[\w.]+
Run Code Online (Sandbox Code Playgroud)

例如:

->assert('hash','[\w.]+')
Run Code Online (Sandbox Code Playgroud)


The*_*tor 7

尝试

->assert('hash', '[a-zA-Z0-9.]+')
Run Code Online (Sandbox Code Playgroud)

为什么不[\w.]呢?

您将问题标记为PHP,因此我认为本手册适用.它在那里读

\w  
    any "word" character
Run Code Online (Sandbox Code Playgroud)

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

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

因为它读取散列,您可能也想尝试

->assert('hash', '[a-fA-F0-9.]+')
Run Code Online (Sandbox Code Playgroud)

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