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