2012-01-23 120 views
1

我想驗證只能包含字母數字和只有一個特殊字符的字符串。我嘗試了(\\W).{1,1}(\\w+)Java字符串驗證只有一個字母數字和正則表達式

但是,只有當我從一個特殊的角色開始纔是真實的。但是我可以在String的任何地方有一個特殊字符。

+0

請表明應匹配的例子和其他人不應該。 – shift66

回答

0

使用matcher.find()而不是matcher.match()和搜索\\w和去除加號(+),因爲它會匹配您string.If你的字符串中的所有字母數字字符序列只包含他們,你的正則表達式匹配整個字符串。

1

使用^$錨指示正則表達式引擎開始從字符串的開頭匹配,並停止在字符串的結尾匹配,所以把你的正則表達式:

^(\\W).{1,1}(\\w+)$

請帶看看this關於正則表達式的Oracle(Java)教程。

1

嘗試此正則表達式:\w*\W?\w*(Java字符串:"\\w*\\W?\\w*"

這個表達匹配零長度字符串的缺點。如果輸入必須只有一個特殊字符,請從表達式中刪除問號?

0

如果我正確理解您正則表達式,這可以解決你的問題:

([\w]+)([^\w])([\w]+) 
+0

其簡單就像我想要一個字符串,可以字母數字和只有一個特殊字符。例如。有效:abc!無效:abdc @ y! –

相關問題