Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果字符串包含特定字符,则引发错误_Javascript_Regex_Angular - Fatal编程技术网

Javascript 如果字符串包含特定字符,则引发错误

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

我不熟悉正则表达式,我只是想知道什么可能是正则表达式来检查我的字符串是否包含以下字符之一: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(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)