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