Java Regexp仅匹配单词(', - ,space)

时间:2017-08-10 16:37:12

标签: java regex

什么是Java正则表达式以匹配仅包含:

的所有单词
  • a z A Z
  • ' - 空间字符,但不得在开头或 端。

示例

  • test'test 匹配

  • 测试'

  • 不匹配
  • '测试

  • 不符
  • -test

  • 不匹配
  • 测试 -

  • 不匹配
  • 测试测试匹配

3 个答案:

答案 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