为什么我的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
