[英]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.