我有一個正則表達式,只接受可打印的ASCII集,如下所示。可打印ASCII的正則表達式,但不允許所有字符都是空格的字符串
([!-~]|[ ])*
但我想拒絕一切都像
" "
任何建議空字符串?
在此先感謝
我有一個正則表達式,只接受可打印的ASCII集,如下所示。可打印ASCII的正則表達式,但不允許所有字符都是空格的字符串
([!-~]|[ ])*
但我想拒絕一切都像
" "
任何建議空字符串?
在此先感謝
好像你想是這樣的,
"^(?=[ \\t]*\\S)([!-~]|[ ])*"
(?=[ \\t]*\\S)
稱,有至少要包含一個非空格字符會提出這一特定線路上。
OR
string.matches("(?=\\s*\\S)([!-~]|[ ])*");
注意,\\s
匹配線也打破。
String s[] = {"foo bar", " ","bar"};
for(String i:s)
{
System.out.println(i.matches("(?=[ \\t]*\\S)([!-~]|[ ])*"));
}
輸出:
true
false
true
如果空字符串""
也不應該通過您正則表達式的測試,然後只需String#Trim()
你在比賽之前輸入。將您的正則表達量詞從*
更改爲+
,即至少需要一個字符。
([!-~]|[ ])+
然後空字符串或只有空格的字符串將無法匹配您的正則表達式。
它匹配的行也有一個空格... – 2015-02-12 06:07:51
該行將被修剪爲'「」',並且無法匹配正則表達式。 – 2015-02-12 06:09:13
感謝您的建議,但我在XSD中使用此正則表達式。所以我認爲任何字符串處理都是不可能的 – Mayuran 2015-02-12 06:11:48
,因爲我已經使用在XSD正則表達式,下面的正則表達式不能使用
^(?=[ \\t]*\\S)([!-~]|[ ])*
不過我用下面的表達式,這似乎是爲我工作。一個簡單的表達沒有任何展望
([ ]*([!-~])[ ]*)+
一個例子會更好。 – 2015-02-12 06:01:16
'\\ S +'會匹配所有不是空白的東西。 – 2015-02-12 06:03:41
@ Elliott Frisch,想要匹配的字符串是否包含空格,如果所有字符都是空格,只想拒絕 – Mayuran 2015-02-12 06:07:19