2017-08-10 69 views
0

什麼是Java正則表達式匹配只包含所有詞:爪哇正則表達式匹配唯一的話(」, - ,空間)

  • 一個Žž
  • -空間人物,但他們不能在開頭或 結束。

實例

  • test'test匹配

  • 測試 '不匹配

  • ' 測試不匹配

  • -test不匹配

  • 測試 -不匹配

  • 測試,測試比賽

+0

至少,發表您的匹配和不匹配的例子。 –

+2

與實例編輯 – user2602584

+0

可以使用'^ [A-ZA-Z] [A-ZA-Z'\ S - ] * [A-ZA-Z] $'(將需要輸入至少2個字符) – anubhava

回答

0

當你指的是空格字符它是:[a-zA-Z ] 因此它檢查你的字符串是否包含az(小寫)和A-Z(大寫)字符和空白字符。如果沒有,會導致測試失敗

1

您可以使用以下模式:^(?!-|'|\\s)[a-zA-Z]*(?!-|'|\\s)$

下面是例子:

String s1 = "abc"; 
String s2 = " abc"; 
String s3 = "abc "; 
System.out.println(s1.matches("^(?!-|'|\\s)[a-zA-Z]*(?!-|'|\\s)$")); 
System.out.println(s2.matches("^(?!-|'|\\s)[a-zA-Z]*(?!-|'|\\s)$")); 
System.out.println(s3.matches("^(?!-|'|\\s)[a-zA-Z]*(?!-|'|\\s)$")); 
0

這裏是我的解決方案:

/(\w{2,}(-|'|\s)\w{2,})/g

你可以拿它來旋轉Regexr.

它首先檢查\w的單詞,然後使用「或」邏輯使用|,然後是另一個單詞的三個限定符中的任何一個。括號{}確保兩端的單詞至少有2個字符長,因此不會捕獲像don't這樣的收縮。您可以將其設置爲任何值以防止更長的單詞被捕獲或完全忽略它們。

注意:\w也會尋找_下劃線。如果你不想,你可以用[a-zA-Z]取代它,像這樣:

/([a-zA-Z]{2,}(-|'|\s)[a-zA-Z]{2,})/g