java - 不允许使用波形符/控制台键的正则表达式

标签 java regex

我有以下正则表达式

(^[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] 类也会匹配一些其他非字母符号:

enter image description here

这是一个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/

相关文章:

java - 通过高级客户端写入elasticsearch - 在文档上设置时间戳

java - LayoutWrappingEncoder 的 LogBack 默认字符集?

javascript - 正则表达式用javascript在跨度中包装第一个整数

javascript - 使用正则表达式允许两个单词之间有空格

Java 重定向 System.out 并追加

java - 处理大量事件监听器?

regex - 在 vim 中重复替换模式次数

Java 正则表达式前瞻需要太多时间

php - 简单的 PHP 正则表达式问题

java - Java 中的重置按钮