我对 preg
主题还很陌生,我正在使用这个 preg_match
条件来检查用户是否输入了空格、unicode 字母、数字、下划线或破折号:
if(preg_match("/[^\040\pL\pN_-]/u", $term)) {
但现在我想允许使用逗号。所以我尝试了这个:
if(preg_match("/[^\040\pL\pN,_-]/u", $term)) {
它确实有效,我只是想知道为什么。我只是想更好地理解它。例如,为什么必须是 ,_-
而不是 -_,
才能允许逗号?
如果有人能一步一步向我解释这一点,我将非常感激。
最佳答案
这是因为 -
用于方括号中的范围([]
-> 字符类)。从manual开始:表示字符范围
,例如:0-9
或a-z
。
所以只要你把它放在最后就可以了,不必逃避它。在所有其他情况下,您必须使用反斜杠将其转义,例如\-
。
意思是:
,_- //At the end _,- //At the end \-,_ //Escape it \-_, //Escape it ,\-_ //Escape it _\-- //Escape it
关于php - 允许空格、unicode 字母、数字、下划线、破折号和逗号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30550203/