我正在寻找一个匹配双空格的JS Regex
([-!$%^&*()_+|~=`{}\[\]:";'<>?,.\w\/]\s\s[^\s])
RegEx应该匹配双倍空格(当包含在引号内时,不包括行的开头或结尾)。
对此的任何帮助将不胜感激。
例如:
var x = 1,
Y = 2;
会好的
var x = 1;
不会(=
符号后面超过一个空格。
如果是
console.log("I am some console output");
会很好,因为它在双引号内
答案 0 :(得分:4)
此问题是此问题中向"regex-match a pattern, excluding..."
解释的技术的典型案例我们可以通过一个非常简单的正则表达式解决它:
(["']) \1|([ ]{2})
交替|
的左侧与完整' '
和" "
匹配。我们将忽略这些匹配。右侧匹配并捕获组2的双重空格,我们知道它们是正确的,因为它们与左侧的表达式不匹配。
该程序展示了如何在JavaScript中使用正则表达式,我们将在其中检索第2组捕获:
var the_captures = [];
var string = 'your_test_string'
var myregex = /(["']) \1|([ ]{2})/g;
var thematch = myregex.exec(string);
while (thematch != null) {
// add it to array of captures
the_captures.push(thematch[2]);
document.write(thematch[2],"<br />");
// match the next one
thematch = myregex.exec(string);
}
Perl和PCRE的整齐变化
在最初的答案中,我没有注意到这是一个JavaScript问题(后来添加了标签),所以我给出了这个解决方案:
(["']) \1(*SKIP)(*FAIL)|[ ]{2}
在这里,感谢(*SKIP)(*FAIL)
魔法,我们可以直接匹配空格,而不需要捕获组。
请参阅demo。
参考
答案 1 :(得分:-1)
简单的解决方案:
/\s{2,}/
匹配所有出现的一个或多个空格字符。如果需要匹配整行,但仅当它包含两个或多个连续的空格字符时才会匹配:
/^.*\s{2,}.*$/
如果空白不需要连续:
/^(.*\s.*){2,}$/