2013-02-15 177 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/方法是一種比較常見的慣例內置到解析器中,除非您動態構造字符串或標誌。

相關問題