javascript - 在给定的三个单词的字符串中检测连字符的模式

标签 javascript

我想搜索一个字符串是否包含以下模式,它仅由 两个 - 符号(连字符)和 单个单词 分隔组成,不是短语或句子:

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/

相关文章:

javascript - 在 React 中获取子组件的高度

javascript - 迪维 : Hide Button when clicked

javascript - ionic Angular 嵌套 ng-repeat 过滤器,如果为空则隐藏标题

javascript - 使用 Javascript 插入具有零宽度连接符的表情符号

javascript - 捕获动态更改其来源的图像的加载事件

javascript - 将多个元素放入一个 jQuery 滚动显示函数中

javascript - Dart 编辑器中出现非常奇怪的警告。我可以以某种方式禁用它们吗?

javascript - 使 anchor 链接位于 id 上方一些像素

javascript - 使用 Node.js 中其他 Buffer 的一部分创建新的 Buffer

javascript - 如何在 Angular ui 路由器中使最后一个斜杠可选?