2013-05-08 15 views
0

我想寫reg表達式,它不應該使用(/,\, - ,[,],<,>,$,〜,!,@,#,:,%以外的特殊符號。所以我嘗試:如何編寫使用一些特殊字符的reg表達式?

if { [regexp {^[\w/-\[\]<>$#[email protected]#%:\\\/]+$} $name] != 1 } { 
     puts "Handle error"; 
    } 

但這不行。

例如,對於這樣的名稱IO1??它不被視爲錯誤

誰能幫助?

+1

黑色斜線或前斜線? – 2013-05-08 17:05:25

+0

似乎你剛纔在下劃線,斜槓,字母,數字等初始問題中增加了更多的字符......你對這些新的「要求」進行表述的方式使得它對實際允許的內容感到困惑。除了......以外,不要使用雙重否定符號,因此很難弄清楚你想要的是什麼。 – Walls 2013-05-08 17:24:59

+0

是的,據我瞭解,結果不應改變。是嗎? – 2013-05-08 17:27:03

回答

4

你必須逃離-你的性格類或把它在開始 - 否則它解釋爲一個範圍:

regexp {^[\w/\-\[\]<>$#[email protected]#%:\\\/]+$} $name 

regexp {^[-\w/\[\]<>$#[email protected]#%:\\\/]+$} $name 

/\[之間的距離似乎包含?

+0

謝謝。這是我正在尋找的。 – 2013-05-08 17:37:52

2

我假設你想要兩種類型的斜槓/\。你可以試試^[\w\\\/]+$我試了一下examples here

你很近,但好像你只是在處理/。你是正確的逃脫它(需要\/)。如果您添加額外的\\,您也允許使用\

如果這不起作用,請提供一些您正在使用的傳遞/失敗的複雜字符串的示例,以便我們可以幫助更好地製作正則表達式。

注意:這個答案只針對數字,字母,下劃線和斜線。

+1

實際上,在字符類中需要轉義的字符非常少。 '/'甚至不需要轉義外部字符類,除非用於分隔或分隔。 – melwil 2013-05-08 17:12:39

+0

http://www.tcl.tk/man/tcl8.6/TclCmd/re_syntax.htm#M30 – potrzebie 2013-05-08 17:29:05

相關問題