gpt4 book ai didi

regex - 正则表达式 - 无法检查特殊字符 [ ]

转载 作者:行者123 更新时间:2023-12-03 03:12:00 25 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式来检查以下字符:( ) { } [ ]

以下代码获取用户输入的内容,并根据用户是否输入了无效字符,控制台记录一条消息。我遇到的问题是我无法让它检查两个 [ ] 字符 - 下面的代码检查 [ 但不检查 ]

 var nameString = $("#name").val();
var regexp = /[(){}[]/;
var invalidCharacters = nameString.match(regexp);
if(invalidCharacters){
console.log('Contains invalid character');
} else{
console.log('DOES NOT contain an invalid character');
}

如何添加 ] 并保持正则表达式有效?

最佳答案

您必须放置 ]一开始,就像这样,

var  regexp =  /[](){}[]/;

现在,可以理解的是,这看起来很奇怪。它看起来像一个空字符类,[] ,后跟一对括号,() , {} ,和[] 。但不管你信不信,忽略 ] 实际上是正则表达式中的标准。表示字符类的结束如果它是第一个字符。因此上面实际上是字符](){}[的字符类。 .

您还可以将其重新排列为 ][(){} ,但正则表达式看起来仍然令人困惑:

var  regexp =  /[][(){}]/;

看,现在看起来像两个个字符类——一个是空的,另一个是字符 (){} - 但同样,这就是它看起来的样子,上面的内容实际上也有效 - 它是字符集 ][(){} .

问题是,大多数人不了解字符类的这一方面,因此您最终只会让阅读您代码的其他人感到困惑。我建议简单地转义 ] ,正如 @vks 的回答:

var  regexp =  /[(){}[\]]/;

这一点大家都会明白。

关于regex - 正则表达式 - 无法检查特殊字符 [ ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25785097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com