我试图为我的“地址”列创建一个正则表达式,代码为:
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]*$
。 (abc
和def
是您的两个字符类型块)。因为*
附加到第二个块,所以说[abc]
的一个实例或任何数量的[def]
。最后,我们不需要在括号内使用
|
,因为它们已经意味着其中包含一个字符(已经表现为or了)。