繁体   English   中英

java的正则表达式

[英]regular expression for java

我正在尝试编写正则表达式。 要求是:表达式应该用cyrilic字母表写,也可以包含任何数字和任何符号,如!@#$%^&*()等等,只排除拉丁字母。 我的问题是我的表达不包括所有这些特殊符号!@#$ ...我的表达式是^ [а-яА-ЯёЁa0-9] + $。 我做测试:

@Test
public void matchAnEmptyStringOrASpecificOtherPattern() {

    String input = "";
    // ^[а-яА-ЯёЁa0-9]+$
    assertTrue( Pattern.compile("^[а-яА-ЯёЁa0-9]+$").matcher(input).find()    

);

如何在我的模式中包含这些符号。

您不能使用带有西里尔字符的范围(例如[а-я] )。

如果你只想匹配!@#$集中的西里尔字符,数字和字符,你可能想要的是:

assertTrue(
    Pattern.compile(
      // | cyrillic and supplementary blocks
      // |                                            | the rest
        "(\\p{InCyrillic}|\\p{InCyrillic_Supplementary}|[!@#$0-9])+"
    )
    .matcher(input)
    // match all input (instead of "find" with "^" and "$")
    .matches()
);

Pattern p = Pattern.compile(
    "(\\p{InCyrillic}|\\p{InCyrillic_Supplementary}|[!@#$0-9])+"
);

System.out.println(p.matcher("я!Я@#$1").matches()); // true
System.out.println(p.matcher("я!Я@#$abc").matches()); // false, has western letters

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM