2013-02-15 178 views
1

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

我期待在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.'); 
} 

可有人请识别我的错误,或引导我倒更有效的路径?目前我得到的错误是,正则表达式没有“高管”方法

+0

你看过关于Javascript如何使用正则表达式的任何文档吗? – 2013-02-15 21:30:10

+1

http://xkcd.com/936/只是说' – 2013-02-15 21:32:02

+0

@WaleedKhan你认为我如何创建我的例子? – 2013-02-15 21:33:57

回答

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]

其他,你的代码看起来不错。

+0

你修正了他的错误,但这个除az,AZ,0-9或空格外,不允许任何其他用途。它不需要特殊字符。 – 2016-05-04 21:42:30

+0

@DominicTobias:这个正则表达式将*匹配*一个不包含特殊字符的字符串,但它本身并不“要求”或“禁止”任何东西。相反,OP的代码将拒绝任何与此正则表达式匹配的密码;所以它要求密码至少包含一个特殊字符,通过禁止任何不是的密码。 – ruakh 2016-05-04 22:41:55

+0

嗯,也许这是一个比寻找特定字符列表更好的方法 – 2016-05-05 08:36:38

3

在JavaScript中,regexs的格式是这样的:

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

注意,没有引号,而是你使用正斜杠处开始和结束。

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/方法是一种比较常见的惯例内置到解析器中,除非您动态构造字符串或标志。

相关问题