gpt4 book ai didi

java - 关于正则表达式空白

转载 作者:行者123 更新时间:2023-12-01 12:09:09 25 4
gpt4 key购买 nike

我有一个关于在 java 正则表达式中表示空间的小查询。

我想限制名称,为此我已将模式定义为

Pattern DISPLAY_NAME_PATTERN = compile("^[a-zA-Z0-9_\\.!~*()=+$,-\s]{3,20}$");

但是 Eclipse 将其指示为错误“无效的转义序列”。它是针对“\s”说的,根据

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

是一个有效的预定义类。

我缺少什么。有人可以帮我吗。

提前致谢。

最佳答案

您需要再次转义\s中的\。而且,您不需要在字符类中转义 . 。字符类中的 .\\. 与文字点匹配。

Pattern DISPLAY_NAME_PATTERN = Pattern.compile("^[a-zA-Z0-9_.!~*()=+$,\\s-]{3,20}$");

并将 - 放在字符类的第一个或最后一个位置。因为字符类中心的 - 可以充当范围运算符。 regex.PatternSyntaxException: Illegal character range 异常主要是因为这个问题,在 ,\\s 之间不存在范围>

如果你想进行反斜杠匹配,那么你需要将其转义三次。

Pattern DISPLAY_NAME_PATTERN = Pattern.compile("^[a-zA-Z0-9_.\\\\!~*()=+$,\\s-]{3,20}$");

示例:

System.out.println("foo-bar bar8998~*foo".matches("[a-zA-Z0-9_.\\\\!~*()=+$,\\s-]{3,20}"));   // true
System.out.println("fo".matches("[a-zA-Z0-9_.\\\\!~*()=+$,\\s-]{3,20}")); // false

关于java - 关于正则表达式空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27372071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com