我是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;
}
})
谢谢。
答案 0 :(得分:1)
您可以使用一个简单的正则表达式:
this.isValidName = !/[oqi]/i.test(this.form.get('nameValue').value);
基本上这样做是对字符串进行不区分大小写的正则表达式测试。
答案 1 :(得分:1)
如果您在Angular中使用反应式表单,则可以在表单控件的 Validators.pattern 中使用“模式”:
Validators.pattern("[^oOqQiI]+")
或者
Validators.pattern(/^[^oqi]+$/i)
/^[^oqi]+$/i
表达式匹配由不是o
,q
和i
(不是i
的一个或多个字符组成的整个字符串不敏感的标志)。
请参见proof。