javascript正则表达式要求至少一个特殊字符

时间:2013-02-15 21:27:47

标签: javascript jquery regex

我见过很多不允许任何特殊字符的正则表达式示例。我需要一个至少需要一个特殊角色的人。

我正在看一个C#正则表达式

var regexItem = new Regex("^[a-zA-Z0-9 ]*$");

这可以转换为使用javascript吗?我是否需要逃避任何角色?

基于我迄今为止构建的一个例子:

var regex = "^[a-zA-Z0-9 ]*$";

//Must have one special character
if (regex.exec(resetPassword)) {
    isValid = false;
    $('#vsResetPassword').append('Password must contain at least 1 special character.');
}

有人可以说出我的错误,或者引导我走上更有效的道路吗?我目前得到的错误是正则表达式没有'exec'方法

3 个答案:

答案 0 :(得分:3)

在javascript中,正则表达式的格式如下:

/^[a-zA-Z0-9 ]*$/

请注意,没有引号,而是在开头和结尾使用正斜杠。

答案 1 :(得分:3)

你的问题是"^[a-zA-Z0-9 ]*$"是一个字符串,你需要一个正则表达式:

var regex = /^[a-zA-Z0-9 ]*$/;                 // one way
var regex = new RegExp("^[a-zA-Z0-9 ]*$");     // another way

[more information]

除此之外,您的代码看起来很好。

答案 2 :(得分:1)

在javascript中,您可以通过两种方式创建正则表达式对象。

1)您可以将构造函数方法与RegExp对象一起使用(请注意拼写不同于您使用的拼写):

var regexItem = new RegExp("^[a-zA-Z0-9 ]*$");

2)您可以使用语言中内置的文字语法:

var regexItem = /^[a-zA-Z0-9 ]*$/;

第二个优点是你只需要逃避正斜杠,你不必担心引号。第一个优点是您可以以编程方式从各个部分构造一个字符串,然后将其传递给RegExp构造函数。


此外,正则表达式的可选标志以这两种形式传递:

var regexItem = new RegExp("^[A-Z0-9 ]*$", "i");
var regexItem = /^[A-Z0-9 ]*$/i;

在javascript中,除非您动态构造字符串或标志,否则它似乎是内置于解析器中的用户/regex/方法的更常见约定。