2015-05-29 71 views
0

我試圖想出一個以字母,空格,逗號,點,&符,撇號和連字符開頭的正則表達式。當輸入字符串包含&符時正則表達式不匹配

但是,符號字符給我頭痛。只要它出現在輸入字符串中,正則表達式就不再匹配。

我在TextInput(項目中創建的自定義控件)的'Format'屬性中使用C#在ASP.net項目中使用正則表達式。其中,我使用Regex.IsMatch(Text, Format)來匹配它。

例如,使用此正則表達式:

^[a-zA-Z][a-zA-Z&.,'\- ]*$ 

的結果是:

John' william-david      Pass 
John, william'david  allen--tony-'' Pass 
John, william&david      Fail 

每當我在輸入字符串的正則表達式不再匹配放了&,但是沒有它一切正常。

我該如何解決我的問題?爲什麼&符號會導致問題?

注:

  • 我試圖逃跑與^[a-zA-Z][a-zA-Z\&.,'\- ]*$的符號,但它有同樣的問題
  • 我試圖把符號的開頭或結尾Ø^[a-zA-Z][&a-zA-Z.,'\- ]*$^[a-zA-Z][a-zA-Z.,'\-\& ]*$但也不起作用
+4

?用'grep'? – loganfsmyth

+0

你的表達能正常工作([demo](https://regex101.com/r/pE8rC6/1))。 – dasblinkenlight

+1

如果您在命令行中使用'grep',請確保將它放在引號中。 '&'是Bash中的一個特殊字符,因此它需要被轉義或引號。 – loganfsmyth

回答

2

你的問題在別的地方。下面的表達式求true

Regex.IsMatch(@"John, william&david", @"^[a-zA-Z][a-zA-Z&.,'\- ]*$") 

如果您正在使用此正則表達式見https://dotnetfiddle.net/WDvQNP

+0

thx,我在W3school網站嘗試這個正則表達式,http://www.w3schools.com/js/tryit.asp?filename=tryjs_regexp_test,正則表達式實際上在代碼,我的壞,我應該先在代碼中嘗試 –

0

您在評論中提到您的問題與C#有關,所以我會在該上下文中回答您的問題。如果&符號(&)確實爲您的角色課程提供了問題,則應以另一種方式指定它。
幸運的是,C#支持hex escape sequences這意味着您可以指定&\x26

例如,而不是:

^[a-zA-Z][a-zA-Z&.,'\- ]*$ 

使用

^[a-zA-Z][a-zA-Z\x26.,'\- ]*$ 

如果不解決您的問題,那麼你的問題是不是&,這是別的東西。

+0

thx,很高興知道c#實際上支持 –

相關問題