我的php我使用preg_match
来验证输入文本。PHP只允许使用pregmatch的字母,数字,空格和特定符号
if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) {
}
但是,这只允许字母数字和不允许空格。我想要允许空格,字母和数字。和期间(。)和短划线( - )
请帮我一下吗?提前致谢。
我的php我使用preg_match
来验证输入文本。PHP只允许使用pregmatch的字母,数字,空格和特定符号
if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) {
}
但是,这只允许字母数字和不允许空格。我想要允许空格,字母和数字。和期间(。)和短划线( - )
请帮我一下吗?提前致谢。
这里唯一的困难位是冲刺。
对于空间和点,你可以简单地将它们添加到您的字符类,像这样:
'/^[a-zA-Z0-9 .]+$/'
容易。
由于连字符在像这样的字符类中具有特殊含义(正如您已经知道的,它们用于范围字符如a-z
),短划线会稍微难一些。为了在字符类中指定连字符,它必须是类中的第一个字符(即它不能在两个字符之间,否则将被视为字符范围标记)。
所以,你的表达应该是:
'/^[-a-zA-Z0-9 .]+$/'
希望有所帮助。
是的,这有帮助。现在我甚至可以进一步理解preg_match函数的正确语法。 – CudoX
如果你想国际化,为什么不使用'\ p {N}'而不是'0-9' –
如果你不仅要允许ASCII,然后使用Unicode properties:
preg_match('/^[\p{L}\p{N} .-]+$/', $firstname)
\p{L}
是任何语言的任何字母,也符合中国,希伯来语,阿拉伯语,...字符。
\p{N}
任何数字字符,如果你想限制为数字,然后用\p{Nd}
刚刚尝试添加都在你的正则表达式(也意味着如罗马数字)
。 – Rikesh