不要在字符之间加上减号.
"[a-z-]"
这个*是我所知道的每个正则表达方言中的正确语法.如果在符号类的开头或结尾处,减号不*必须被转义. (5认同)
我真的不确定这是标准的regexp语法.我不怀疑它是否有效,但几乎肯定不是最佳做法. (2认同)
albertein.. 7
逃避减号[az\ - ]
不要在字符之间加上减号.
"[a-z-]"
逃避减号[az\ - ]
在字符类[...]
a -
中,如果它被两边的字符包围,则会被特别处理(作为范围运算符).这意味着如果你-
在字符类的开头或结尾包含它,它将被字面上处理(非特殊).
所以你可以使用正则表达式:
^[a-z-]+$
要么
^[-a-z]+$
由于-
我们添加的内容正在逐字处理,因此无需逃避它.虽然如果你这样做并不是一个错误.
另一种(不太推荐)的方法是不在-
字符类中包含:
^(?:[a-z]|-)+$
请注意,在这种情况下,括号不是可选的,因为|
它具有非常低的优先级,因此使用括号:
^[a-z]|-+$
将匹配字符串开头的小写字母和-
末尾的一个或多个.