[英]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.