【问题标题】:Java regex find symbols in a stringJava 正则表达式在字符串中查找符号
【发布时间】:2013-01-05 01:47:13
【问题描述】:

我正在寻找有关 Java 正则表达式的一些解释。我已阅读并尝试过不同的教程,但我的代码无法正常工作。

String myString = "JKAE[JKk]jkhe{kjef}kaejf-aef_a|ef=kjef+kejf\akejf/efj:efa;aef'asd"fd,<ef>";

if( myString.matches(".*[\\[|]|\\{|\\}|-|+|\\\\|;|:|\\'|\\"|<|>|/") ){
   log("something");
   return;
}

只允许使用字母数字字符,包括“.” [点] 不允许使用符号:-_=+\|[{]};:'",/

【问题讨论】:

    标签: java regex symbols


    【解决方案1】:

    很难说出你想要什么,所以这里有两个选择:

    仅适用于字母数字和点:

    if (!myString.matches("[a-zA-Z0-9.]*") {
        // contained an invalid character
    }
    

    要禁止您列出的字符:

    if (!myString.matches("[^-_=+\\\\|\\[{\\]};:'\",<>/]*") {
        // contained an invalid character
    }
    

    【讨论】:

    • 我认为第一种方法更可取。
    • @smit 我也这么认为——因为你可以阅读该死的正则表达式!我只是不确定,因为他提到了他想要的角色。如果他忽略了这一点,那么第一个答案将是唯一理智的答案。
    • 不应该是 [a-zA-Z0-9\\.] 吗?仅使用 .将是一个通配符
    • @Alex 否。字符会丢失字符类中的所有特殊正则表达式含义,连字符和反斜杠除外。在这里,一个点只是一个字面点
    猜你喜欢
    • 1970-01-01
    • 2015-08-26
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2016-09-12
    相关资源
    最近更新 更多