RegEx不允许使用波形符/控制台键

时间:2015-11-05 08:27:18

标签: java regex

我有以下正则表达式

(^[a-zA-z]+([a-zA-Z\s-]*)[a-zA-z]+$)

它禁止除(`)控制台键之外的所有特殊字符。 有人可以解释我在我的正则表达式中做错了什么,或者我如何删除它?

提前致谢。

1 个答案:

答案 0 :(得分:4)

请勿使用[A-z],请使用[a-zA-Z]

^[a-zA-Z]+([a-zA-Z\s-]*)[a-zA-Z]+$

否则,[A-z]类也会匹配其他一些非字母符号:

enter image description here

这是demo on regex101.com

只需注意:当为特定语言设置排序规则时,[A-z]有时可用于匹配POSIX样式正则表达式中的所有字母。

Cygwin上的{p> [[ "ABCEDEF[]_abcdef" =~ ([A-z]+) ]] && echo "${BASH_REMATCH[1]}" LC_COLLATE="en_US.UTF-8"会产生ABCEDF。 如果您将LC_COLLATE设置为C(在Cygwin上,使用export完成),则会提供预期的ABCEDEF[]_abcdef