我试图为我的“地址”列创建一个正则表达式,代码为:

var str = "97sadf []#-.'";
var regx = /^[a-zA-z0-9\x|]|[|-|'|.]*$/;

if(str.match(regx))
   document.write('Correct!');
else
    document.write('Incorrect!');


我想要的特殊字符是][#-.给定的代码,可以给我正确的匹配,但是如果我添加另一种特殊字符,例如@%,则我得到了正确的结果,但是我想要不正确的结果。

我不知道我在哪里做错了,请帮助我纠正。

编辑:对不起,但是我必须与您讨论的一件事是没有必要输入我提到的][#-.特殊字符,但是如果有人输入其他字符,则给定的特殊字符将返回错误。

最佳答案

正确的正则表达式(假设您需要大写字母,小写字母,数字,空格和特殊字符[].-#')是:

var regx = /^[a-zA-Z0-9\s\[\]\.\-#']*$/


有几件事破坏了您的代码。

首先,[]-.具有特殊含义,必须转义(以\为前缀)。

\x检查换行符,我们需要空格(\s)。

接下来,让我们看一下结构。为了简单起见,让我们简化为^[abc]|[def]*$。 (abcdef是您的两个字符类型块)。因为*附加到第二个块,所以说[abc]的一个实例或任何数量的[def]

最后,我们不需要在括号内使用|,因为它们已经意味着其中包含一个字符(已经表现为or了)。

09-25 17:24
查看更多