2017-04-12 53 views
0

我正在嘗試編寫一個只允許字母,數字,單個空格,'-'字面值和'/'字符的正則表達式。我如何限制我的表情只有這些?正則表達式從字符串的中間和末尾刪除特殊字符

如果我進入"This should be invalid because it ends with!!! these",它仍然是返回一個有效的字符串,即使是在最後一個感嘆號。
一個我並不完全正確:

[A-Z]|[a-z]|[0-9]|/|\s|- 
+0

您好,我只是當你刪除了一個答案來完成您的Access計時器的問題。 :(不是很好,照顧轉發嗎? – Andre

+0

我不知道如何撤消刪除 - 我沒有再去掉代碼:(從我工作的計算機上發佈它,沒有在我的電腦上發佈。 @Andre – Tannavee

回答

1

的這裏的問題是,默認情況下,正則表達式不必匹配整個字符串。一個角色足以組成一場比賽(有時甚至沒有)!你需要圍繞你的正則表達式像^(?: ...)+$做,只要你想它的工作:

console.log([ 
 
    'This should be invalid because it ends with!!! these', //=> false 
 
    'This is valid' //=> true 
 
].map(/ /.test, 
 
    /^(?:[A-Z]|[a-z]|[0-9]|\/|\s|-)+$/ 
 
))

然而,一個更緊湊的方式來寫同樣的表情會是^[A-Za-z\d\s\/-]+$

console.log([ 
 
    'This should be invalid because it ends with!!! these', //=> false 
 
    'This is valid' //=> true 
 
].map(/ /.test, 
 
    /^[A-Za-z\d\s\/-]+$/ 
 
))

+0

嘿,這個工作對我來說:'^(?:[AZ] | [AZ] | [0-9] | \/| \ S | - )+ $'但你的建議,'的緊湊型^( ?:[A-Za-z \ d \ s \/- ])+ $',並沒有返回正確的結果,但是第一個完美地工作了:) – Tannavee

+0

我很驚訝第二個沒有爲你工作。什麼字符串你運行它,您使用的? – gyre

+0

我使用重新庫在Python 3.4是什麼味道正則表達式。對不起,我似乎在運行它已經犯了一個錯誤。試圖再次和它運行得很好! – Tannavee

相關問題