我盡力配合與Java 8正則表達式字符串構成任何語言比賽用java 8的正則表達式字符串構成任何語言
,只要它包含字母,數字和.
或-
String s = "בלה בלה";
String pattern= "^[\\p{L}\\p{Digit}_.-]*$";
return s.matches(pattern);
我是什麼因爲此代碼爲希伯來語有效字符串返回null,因此缺少。
我盡力配合與Java 8正則表達式字符串構成任何語言比賽用java 8的正則表達式字符串構成任何語言
,只要它包含字母,數字和.
或-
String s = "בלה בלה";
String pattern= "^[\\p{L}\\p{Digit}_.-]*$";
return s.matches(pattern);
我是什麼因爲此代碼爲希伯來語有效字符串返回null,因此缺少。
您可以將空白添加到您的模式,並使用\w
代替\p{L}\p{Digit}_
在經過Pattern.UNICODE_CHARACTER_CLASS
標誌:
String s = "בלה בלה";
String pattern= "(?U)[\\w\\s.-]*";
System.out.println(s.matches(pattern));
// => true
由於圖案內String#matches()
使用的方法,該^
和$
錨點是沒有必要的。如果您打算使用Pattern#find()
方法使用該模式,請將模式與原始代碼("^(?U)[\\w\\s.-]*$"
)一樣放在錨點內。
圖案的詳細資料:
(?U)
- 在Pattern.UNICODE_CHARACTER_CLASS
嵌入式修改標誌,使速記字符類支持Unicode(你可以看到在此模式下\w
比賽)[\\w\\s.-]*
- 零個或多個:
\w
- 字詞(字母,數字,_
等等)\s
- 空格.
- 點(不需要轉義字符類的內部)-
- 連字符(沒有必要,因爲它是在字符類的末尾)
等一下,你在字符串中有一個空格,但不是在模式中。嘗試'String pattern =「(?U)^ [\\ w。\\ s - ] * $」' –
* *返回null?作爲'String#matches()'返回原始布爾值' – Lino