使用Regex防止特定的特殊字符出现在字符串中的任何位置

Prevent a specific special character from appearing ANYWHERE within a string with Regex?

本文关键字:字符串 位置 任何 特殊字符 Regex 使用      更新时间:2023-09-26

我正在做一个非常非常简单的正则表达式,它是:/^.*@.*'..*[a-z]$/i

我所要做的就是在那里扔一些东西,如果在字符串中有<>任何地方就会失败。

我最初的想法是这样的:/^[^<>].*@.*'..*[a-z]$/i,但这只有在<或者>在字符串的开头或结尾。是否有一个简单的命令,我错过了,所以它会失败,如果这些字符中的任何一个是在字符串的任何地方?

为什么使用正则表达式?这看起来有点矫枉过正,而且regex一点也不简单。

为什么不直接使用includes()函数呢?

!str.includes(">") && !str.includes("<")

您需要的RegExp就像/<|>/一样简单。测试'not<ok>string'.match(/<|>/);'okstring'.match(/<|>/)

var okString = 'okstring';
var notOkString = 'not<ok>string';
if(okString.match(/<|>/)){
    console.log('this won''t log'); 
}
if(notOkString.match(/<|>/)){
    console.log('this will log'); 
}

您可以在regex中使用否定字符类而不是.*:

/^[^<>]*@[^<>]*'.[^<>]*[a-z]$/i

[^<>]*将匹配0个或多个非<>的字符

或者只是测试<>是否存在,使用:

var ret = /[<>]/.test(string); // true means presence of < or >