繁体   English   中英

Javascript:如何编写正则表达式来检查符号是否被所有出现的空格包围

[英]Javascript : How to write a regex to check if a symbol is surrounded by space for all occurences

句子中的冒号 ':' 应该用空格包围它的所有出现。

我有一个字符串“Yes I Do : things that have:fun”

我的正则表达式应该返回 false,我尝试了下面的检查是检查第一次出现,如果发现它返回 true。

/(\s:\s)/.test("sd : sds:sds")

如果你想要一个纯正则表达式解决方案,那么使用这个基于交替的正则表达式来找出无效的输入

/(?:^|\S):|:(?:$|\S)/

正则表达式演示

正则表达式详情:

  • (?:^|\\S) : 匹配开始或非空格
  • : : 匹配一个冒号
  • | : 或者
  • : : 匹配一个冒号
  • (?:$|\\S) : 匹配结尾或非空格

 const regex = /(?:^|\\S):|:(?:$|\\S)/; const arr = [`Yes I Do : things that have :fun`, `Yes I Do : things that have: fun`, `: fun`, `fun :`, `Yes I Do : things that have : fun`, ` : fun`, `fun : `]; for (var i=0; i<arr.length; i++) { console.log(regex.test(arr[i]), '::', arr[i]); }

你可以做完全相反的事情,搜索被非空格字符包围的符号(在符号之前或之后)。

!/\S:|:\S/.test("sd : sds:sds")

将全局标志( g )添加到 RegEx 的末尾并检查非空格字符。

 console.log(!/\\S:|:\\S/g.test("sd : sds:sds")); console.log(!/\\S:|:\\S/g.test("sd : sds : sds"));

这将检查完整的字符串。

您可以通过正则表达式和简单的逻辑来实现。 这不是实现用例的正确方法,但也许可以提供帮助。

 function check(str) { let reg = / : /gi; let match = str.match(reg); if (match && match.length == str.split(":").length - 1) { return true; } else { return false } } console.log(check("sdf : sdf")); console.log(check("sdf: sdf")); console.log(check("sdf : sdf:")); console.log(check("sdf : sdf sdfds : sdf"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM