2011-12-07 206 views
1

我试图做一个正则表达式为我的地址栏的代码是:正则表达式字母数字和特殊字符的jQuery

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

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

特殊字符我想,是][#-.给定的代码返回我正确的比赛,但如果我添加另一种特殊字符,如@%然后我得到了正确的结果,但我想要不正确的结果。

我不知道我做错了,请帮助我做出正确的..

编辑:对不起球员,但有一件事我要和你讨论是没有必要输入特殊字符我提到][#-.,但如果有人输入其他那么给定的特殊字符,那么应该返回不正确的。

回答

2

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

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

有几件事情破坏你的代码。

首先,[]-.有特殊含义的,必须进行转义(与\前缀)。

\x检查换行符,我们想要空格的地方(\s)。

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

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

+0

非常感谢很多人,你是绝对正确的,但是你错过了我加入的一个'''我发现我的错误我做了什么,再次感谢.. –

+0

+1你的权力的扣除问题。我试图找出OP为什么要搜索这种奇怪格式的字符串。 :-) – ziesemer

相关问题