为什么我的Javascript正则表达式输出不一致?
这个问题在这里已经有了答案:
您正在使用全球( g
)国旗。
根据MDN:
与exec()
(或与它结合)一样,在同一个全局正则表达式实例上多次调用的test()
将超过先前的匹配。
你可以通过设置lastIndex
来解决这个问题。
因为你用于test
的g
修饰符。
MDN:
在同一个全局正则表达式实例上调用多次的test()
将超过先前的匹配。
在每个解决此问题后使用regex.lastIndex = 0
。 或者,如果不需要多次匹配,请删除/g
修饰符。
function checkSpecificLanguage(text_val) {
var regex = /^[u3000-u303Fu3040-u309Fu30A0-u30FFuFF00-uFFEFu4E00-u9FAFu2605-u2606u2190-u2195u203B]+$/ig;
console.log( text_val+"-"+regex.test(text_val) );
regex.lastIndex = 0
console.log( text_val+"-"+regex.test(text_val) );
regex.lastIndex = 0
console.log( text_val+"-"+regex.test(text_val) );
regex.lastIndex = 0
console.log( text_val+"-"+regex.test(text_val) );
regex.lastIndex = 0
console.log( text_val+"-"+regex.test(text_val) );
return regex.test(text_val);
}
checkSpecificLanguage("でしたコンサート");
链接地址: http://www.djcxy.com/p/92591.html