java - 为什么 `\.` 不是 Java 正则表达式中的有效转义序列

标签 java regex

<分区>

在构建 stock watcher 的 GWT 教程中有这个正则表达式来检查输入是否有效:

if (!symbol.matches("^[0-9A-Z\\.]{1,10}$"))

它允许输入 1 到 10 个字符,可以是数字、字母或点。

让我感到困惑的部分是 \\.

我将其解释为转义的反斜杠 \\ 然后是代表任何字符的 .。我认为正确的表达式是 \. 来转义点,但这样做会导致 eclipse Invalid escape sequence 中的正则表达式错误。

我是否遗漏了明显的地方?

最佳答案

这是 Java 中正则表达式的麻烦之一。 \\ 不是正则表达式级别的转义反斜杠,只是在字符串级别。

这个字符串:

"^[0-9A-Z\\.]{1,10}$"

定义这个正则表达式:

^[0-9A-Z\.]{1,10}$

...因为转义被字符串文字消耗了。

关于java - 为什么 `\.` 不是 Java 正则表达式中的有效转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40587619/

相关文章:

java - 为什么Java只按值传递?

java - 在Java中使用正则表达式过滤多个标志

mysql - 如何编写一个 mysql 语句,其中列出以字符列表的字母开头的元素?正则表达式

javascript - 正则表达式

javascript - 我希望能够根据角色类别及其阵营选择神灵列表

java - 绑定(bind)数据成员的 Hql 查询

java - 使用quartz调度程序调度jasper报告

java - 在 Java SimpleXML 库中设置路径时如何使用 XML 元素的值?

java - 在 JTable 中搜索 - 未获得正确的输出

python - 以任意顺序查找符号条目