Javascript 如果字符串包含特定字符,则引发错误
我不熟悉正则表达式,我只是想知道什么可能是正则表达式来检查我的字符串是否包含以下字符之一:o,q,I,o,q,I 我目前正在使用以下方法进行此操作:Javascript 如果字符串包含特定字符,则引发错误,javascript,regex,angular,Javascript,Regex,Angular,我不熟悉正则表达式,我只是想知道什么可能是正则表达式来检查我的字符串是否包含以下字符之一:o,q,I,o,q,I 我目前正在使用以下方法进行此操作: const notAllowedCharacters = ['Q' , 'q' , 'O' , 'o', 'I' , 'i']; const nameValue = this.form.get('nameValue').value.split(''); nameValue.forEach(value => { if(notAllowedC
const notAllowedCharacters = ['Q' , 'q' , 'O' , 'o', 'I' , 'i'];
const nameValue = this.form.get('nameValue').value.split('');
nameValue.forEach(value => {
if(notAllowedCharacters.indexOf(value) > -1) {
this.isValidName = false;
}
})
谢谢。您可以使用一个简单的正则表达式:
this.isValidName = !/[oqi]/i.test(this.form.get('nameValue').value);
基本上,它对字符串执行不区分大小写的正则表达式测试
如果您在Angular中使用被动表单,则可以在Validators中使用“模式”。在表单控件中使用“模式”:
Validators.pattern("[^oOqQiI]+")
或者
/^[^oqi]+$/i
表达式匹配由一个或多个字符组成的整个字符串,这些字符不是o
、q
和i
(i
是不区分大小写的标志)
请参阅。
nameValue.match(/[oqiOQI]/).length>0
在regex101.com上玩游戏。这有助于我更好地理解正则表达式。@Floris谢谢,会检查。g
标志看起来没有必要,在第一次出现时停止应该足够了。@PJProudhon完全正确,习惯的力量总是添加g
:)会很有趣,看看是否有任何执行时间差,但我想这已经通过在第一次搜索后返回优化了。我也会很好奇:)@PJProudhon您的好奇心已经得到满足:没有g
它会更快!显然在普通代码中不明显,但很高兴知道谢谢:)。是的,这应该行得通。我不知道我怎么会错过这个。@AkhileshOjha请接受最适合你的答案。
Validators.pattern(/^[^oqi]+$/i)