我有以下正则表达式
(^[a-zA-z]+([a-zA-Z\s-]*)[a-zA-z]+$)
它禁止除(`)控制台键之外的所有特殊字符。 有人可以解释我在我的正则表达式中做错了什么,或者我如何删除它?
提前致谢。
答案 0 :(得分:4)
请勿使用[A-z]
,请使用[a-zA-Z]
:
^[a-zA-Z]+([a-zA-Z\s-]*)[a-zA-Z]+$
否则,[A-z]
类也会匹配其他一些非字母符号:
只需注意:当为特定语言设置排序规则时,[A-z]
有时可用于匹配POSIX样式正则表达式中的所有字母。
[[ "ABCEDEF[]_abcdef" =~ ([A-z]+) ]] && echo "${BASH_REMATCH[1]}"
LC_COLLATE="en_US.UTF-8"
会产生ABCEDF
。
如果您将LC_COLLATE
设置为C
(在Cygwin上,使用export
完成),则会提供预期的ABCEDEF[]_abcdef
。