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

时间:2020-06-15 10:25:14

标签: javascript regex angular

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

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用一个简单的正则表达式:

this.isValidName = !/[oqi]/i.test(this.form.get('nameValue').value);

基本上这样做是对字符串进行不区分大小写的正则表达式测试。

example

答案 1 :(得分:1)

如果您在Angular中使用反应式表单,则可以在表单控件的 Validators.pattern 中使用“模式”:

Validators.pattern("[^oOqQiI]+")

或者

Validators.pattern(/^[^oqi]+$/i)

/^[^oqi]+$/i表达式匹配由不是oqi(不是i的一个或多个字符组成的整个字符串不敏感的标志)。

请参见proof