2

I've seen plenty of regex examples that will not allow any special characters. I need one that requires at least one special character.

I'm looking at a C# regex

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

Can this be converted to use with javascript? Do I need to escape any of the characters?

Based an example I have built this so far:

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.');
}

Can someone please identify my error, or guide me down a more efficient path? The error I'm currently getting is that regex has no 'exec' method

4

3 回答 3

3

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

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

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

于 2013-02-15T21:32:59.100 回答
3

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

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

[更多信息]

除此之外,您的代码看起来不错。

于 2013-02-15T21:33:13.873 回答
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;

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

于 2013-02-15T21:35:37.800 回答