正则表达式中的非法字符范围

时间:2013-07-11 08:26:44

标签: regex character range

我的正则表达式收到错误消息。以下是信息:

消息:索引17附近的字符范围非法 [?!〜@#$%^&安培; ()_- + = [] | \ ;:““<?>,/]。{8,9} *                  ^

注意:消息末尾的^位于+符号下方。

这是我的代码:

    private static final String PASSWORD_PATTERN_SPECIAL_8 = ".*[~?!@#$%^&*()_-+=[]|\\;:‘“<>,.?/]{8,9}.*";

3 个答案:

答案 0 :(得分:4)

好像你在使用Java。

尝试:

 1. `Pattern.Quote()` function

 2. \Q(characterlistHereWithoutbracket)\E

 3. Escape the character manually by using `\` in front of the
    character.

第二个选项使用任何东西作为\Q..\E之间的文字。

修改

关于第二个选项,我的意思是你可以在this示例中给出它。请参阅特殊字符

或者您可以检查您的正则表达式引擎使用的qouted模式是否与此类似:

\.\*\[~\?!@\#\$%\^&\*\(\)_-\+=\[]\|\\\\;:‘"<>,\.\?/]\{8,9}\.\*

注意:此模式由.Net Regex.Escape()函数获得。

答案 1 :(得分:0)

你需要转义字符串

中的双引号
private static final String PASSWORD_PATTERN_SPECIAL_10 = ".*[~?!@#$%^&*()_-+=[]|\\;:‘\“<>,.?/]{10,20}.*";

答案 2 :(得分:0)

特殊RegEx字符

.\\+*?^$[]{}()|/

在括号内只能逃避

  1. ^一开始,

  2. 中间是
  3. -

  4. ]

  5. \\

  6. 如果破折号不是括号中的第一个或最后一个字符,则需要对其进行转义。

    \_-\\+序列会查找_+之间的所有字符。

    也可能需要转义末端括号。