Col*_*rty 2 javascript regex symbols boolean
该程序应该测试 str,如果 str 中的每个字母两侧都有“+”号,则该函数应返回 true。否则,它应该返回 false。我不断收到错误“SyntaxError:无效量词”。
function SimpleSymbols(str) {
var boolean = false;
for(var i=1;i<(str.length-1);i++){
if(/\w/.test(str.charAt(i))){
if(str.charAt(i-1).match('+') && str.charAt(i+1).match('+')){
boolean = true;
}else{
boolean = false;
}
}
}
str = boolean;
return str;
}
Run Code Online (Sandbox Code Playgroud)
match用于正则表达式,因此它尝试转换'+'为正则表达式,但失败,因为/+/不是有效的正则表达式(应该是'\\+'or /\+/)。但直接测试每个字符会更容易,如下所示:
if(str.charAt(i-1) == '+' && str.charAt(i+1) == '+'){
Run Code Online (Sandbox Code Playgroud)
另请注意,/\w/匹配任何“单词”字符,包括字母、数字和下划线。为了只使用字母字符,应该使用/[a-z]/i(i末尾的 使其不区分大小写,因此它也会匹配大写字母)。
但反转条件似乎要简单得多。只需测试字符串是否包含任何未被符号包围的+字母或字符串开头或结尾的字母,false如果包含则返回,如下所示:
function SimpleSymbols(str) {
return ! /(^|[^+])[a-z]|[a-z]([^+]|$)/i.test(str);
}
Run Code Online (Sandbox Code Playgroud)