我正在尝试使用以下规范验证字符串:
"Non-empty string that contains only letters, dashes, or single quotes"
我正在使用,String.matches("[a-zA-Z|-|']*")但它没有-正确捕捉角色.例如:
Test Result Should Be
==============================
shouldpass true true
fail3 false false
&fail false false
pass-pass false true
pass'again true true
-'-'-pass false true
Run Code Online (Sandbox Code Playgroud)
所以"传球"和" - ' - '传球"都失败了.我的正则表达式做错了什么?
你应该使用以下正则表达式:
[a-zA-Z'-]+
Run Code Online (Sandbox Code Playgroud)
你正则表达式是允许的文字|,你有规定的范围,从|到|.连字符必须放在字符类的结尾或开头,如果要匹配文字连字符,则必须在中间转义.最后的+量化器将确保字符串非空.
另一种方法是包含所有Unicode字母:
[\p{L}'-]+
Run Code Online (Sandbox Code Playgroud)
Java字符串:"[\\p{L}'-]+".