与任何语言的 java 8 正则表达式字符串匹配

Ela*_*nda 3 java regex string

我尝试与任何语言的 java 8 正则表达式字符串匹配

\n\n

只要包含字母、数字和./或-

\n\n
String s = "\xd7\x91\xd7\x9c\xd7\x94 \xd7\x91\xd7\x9c\xd7\x94";\nString pattern= "^[\\\\p{L}\\\\p{Digit}_.-]*$";\nreturn s.matches(pattern);\n
Run Code Online (Sandbox Code Playgroud)\n\n

我缺少什么,因为此代码为希伯来语有效字符串返回 null 。

\n

Wik*_*żew 5

您可以在模式中添加空格,并在传递标志时使用\\w而不是:\\p{L}\\p{Digit}_Pattern.UNICODE_CHARACTER_CLASS

\n\n
String s = "\xd7\x91\xd7\x9c\xd7\x94 \xd7\x91\xd7\x9c\xd7\x94";\nString pattern= "(?U)[\\\\w\\\\s.-]*";\nSystem.out.println(s.matches(pattern));\n// => true\n
Run Code Online (Sandbox Code Playgroud)\n\n

查看Java 演示

\n\n

由于该模式在方法内部使用String#matches(),因此不需要^和锚点。$如果您打算在该方法中使用该模式Pattern#find(),请将模式包含在锚点内,如原始代码 ( "^(?U)[\\\\w\\\\s.-]*$") 中所示。

\n\n

图案详情

\n\n
    \n
  • (?U)-Pattern.UNICODE_CHARACTER_CLASS嵌入式修饰符标志,使速记字符类能够识别 Unicode(您可能会看到\\w在此模式下匹配的内容)
  • \n
  • [\\\\w\\\\s.-]*- 零个或多个:\n\n
      \n
    • \\w- 单词字符(字母、数字_等)
    • \n
    • \\s- 空格
    • \n
    • .- 一个点(不需要在字符类中转义它)
    • \n
    • -- 连字符(不需要,因为它位于字符类的末尾)
    • \n
  • \n
\n