2012-10-01 44 views
1

我想製作一個正則表達式來驗證特定類型的字符串。是需要正則表達式來驗證字符串

驗證串的條件如下:

  • 字符串不應該包含如\(反斜槓)字符,/(正
    斜線),:(結腸),*(星號),? (問號)「(雙
    報價),<(左尖括號),>(右尖括號),|(管道)
  • 不得包含連字符( - )或句點(。)作爲第一個或最後
    字符字符串。

我嘗試了很多,但沒有得到任何的成功,我需要一個正則表達式滿足所有的條件。

+1

你試過了什麼? – CRDave

回答

1

嘗試:

/^[^.\-][^\/:*?"<>|]+[^.\-]$/ 

編輯:此正則表達式應該工作:

/^(?![.\-])(?:[^\\\/:*?"<>|])*[^.\-\\\/:*?"<>|]$/ 

但你可以看到它得到相當不可讀和醜陋我想你會更好做在一個像這樣的功能的步驟:

function isValidString(str) { 
    return /^[^.\-]/.test(str) && 
    /[^.\-]$/.test(str) && 
    /[^\\\/:*?"<>|]+/.test(str); 
} 
+0

看起來你忘記了內部表達式中的反斜槓(例如[http://rubular.com/r/omHcHOBwXN](http://rubular.com/r/omHcHOBwXN)) – khomyakoshka

+0

這不會檢查第一個或最後一個字符爲'\ /:*?「<> |' – grc

+0

你是對的,讓我檢查一下併發佈一個更好的正則表達式,隨意編輯 – elclanrs

1

正則表達式可以包含所謂的「類」,預定或自定義字符集,請使用[:alpha:]或類似[0-9 *。>> <]和類似的自定義。使用「^」字符查找有關類的否定,並通過將它們預先加上「\」來轉義特殊字符。

+1

Just FYI,'[:alpha:]'是一個POSIX字符類,但JS的正則表達式更受Perl的啓發。 –

相關問題