在给定的字符串中,我试图验证至少有两个单词,其中一个单词被定义为任何非数字字符,例如
// Should pass
Phil D'Sousa
Billy - the - Kid
// Should Fail
Joe
454545 354434
Run Code Online (Sandbox Code Playgroud)
我认为这应该有效:
(\b\D*?\b){2,}
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
你忘了在你的"单词"之间留出空格:
\b\D*?\b(?:\s+\b\D*?\b)+
^^^
Run Code Online (Sandbox Code Playgroud)
我可以看到其他一些问题:
我也很怀疑你对"单词"的定义.任何非数字字符也包括标点符号和空格.这可能不是你真正的意思.您可能想要尝试定义这样的单词:[^\d\s]+.这仍然允许单词包含标点符号,但它不允许使用数字和空格.
你使用单词边界有一个问题 - 如果一个单词可以包含标点符号,那么在标点符号开头或结尾的单词将没有单词边界,所以你的正则表达式会错过它们.
您是否正在搜索包含至少两个"单词"的字符串,可能还包含一些数字?或者字符串必须只包含"单词"而字符串中的任何位置都没有数字?目前你的正则表达式正在寻找两个连续的"单词",但一般来说它们可能不是连续的.
| 归档时间: |
|
| 查看次数: |
4024 次 |
| 最近记录: |