我试图为我的地址列创建一个正则表达式,代码为:
var str = "97sadf []#-.'";
var regx = /^[a-zA-z0-9\x|]|[|-|'|.]*$/;
if(str.match(regx))
document.write('Correct!');
else
document.write('Incorrect!');
我想要的特殊字符][#-.
给定的代码返回正确的匹配但如果我添加另一种特殊字符,如@%
那么我得到的正确结果,但我想要结果不正确。
我不知道我哪里做错了请帮助我做对..
编辑:对不起家伙,但我必须与你讨论的一件事就是没有必要输入我提到的特殊字符][#-.
,但是如果有人输入其他人那么给定的特殊字符则应该返回错误。
答案 0 :(得分:2)
正确的正则表达式(假设你想要大写字母,小写字母,数字,空格和特殊字符[].-#'
)是:
var regx = /^[a-zA-Z0-9\s\[\]\.\-#']*$/
有些事情会破坏您的代码。
首先,[
,]
,-
和.
具有特殊含义,必须进行转义(以\
为前缀)。
\x
检查换行符,我们需要空格(\s
)。
接下来,让我们看一下结构;为简单起见,我们简化为^[abc]|[def]*$
。 (abc
和def
是你的两个字符类型块)。由于*
附加到第二个块,因此它表示[abc]
或任意数量的[def]
的一个实例。
最后,我们在括号内不需要|
,因为它们已经意味着包含在其中的一个字符(已经表现得像或)。