我想搜索一个字符串是否包含以下模式,它仅由 两个 -
符号(连字符)和 单个单词 分隔组成,不是短语或句子:
word - word - word
其他条件完全可以忽略。之间的空格不影响模式,所以上面的模式和这个是一样的:
word - word-word
如果有这样的模式,我想返回 true,否则我显然想要 false!
到目前为止,我用连字符拆分字符串并检查是否只有两个并且只有 3 个单词不多不少,但我认为可能有更有效的方法...
最佳答案
您可以使用正则表达式 /^[a-z]+\s*-\s*[a-z]+\s*-\s*[a-z]+$/i
.
解释:
/
- 正则表达式文字
^
- 字符串开始
[a-z]+
- 一个或多个小写字母字符
\s*
- 零个或多个空白字符
-
- 匹配文字连字符
$
- 字符串结束
i
- 忽略大小写
function check(str){
return /^[a-z]+\s*-\s*[a-z]+\s*-\s*[a-z]+$/i.test(str);
}
console.log(check('word - word - word'));
console.log(check('Word - word-word'));
console.log(check('invalid - string'));
关于javascript - 在给定的三个单词的字符串中检测连字符的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63427439/