什么是Java正则表达式以匹配仅包含:
的所有单词示例
test'test 匹配
测试'与
'测试与
-test 与
测试 - 与
测试测试匹配
答案 0 :(得分:1)
您可以使用以下模式:^(?!-|'|\\s)[a-zA-Z]*(?!-|'|\\s)$
以下是示例:
String s1 = "abc";
String s2 = " abc";
String s3 = "abc ";
System.out.println(s1.matches("^(?!-|'|\\s)[a-zA-Z]*(?!-|'|\\s)$"));
System.out.println(s2.matches("^(?!-|'|\\s)[a-zA-Z]*(?!-|'|\\s)$"));
System.out.println(s3.matches("^(?!-|'|\\s)[a-zA-Z]*(?!-|'|\\s)$"));
答案 1 :(得分:0)
当你的意思是空白字符时,它是:[a-zA-Z ]
因此,它会检查您的字符串是否包含a-z(小写)和A-Z(大写)字符以及空白字符。如果没有,测试将失败
答案 2 :(得分:0)
这是我的解决方案:
/(\w{2,}(-|'|\s)\w{2,})/g
您可以在Regexr.
上进行旋转首先使用\w
检查单词,然后使用|
检查带有“或”逻辑的三个限定符中的任何一个,然后检查另一个单词。括号{}
确保两端的单词长度至少为2个字符,因此不会捕获don't
之类的缩写。您可以将其设置为任何值,以防止捕获较长的单词或完全省略它们。
警告:\w
也会查找_
下划线。如果您不想要,可以将其替换为[a-zA-Z]
,如下所示:
/([a-zA-Z]{2,}(-|'|\s)[a-zA-Z]{2,})/g