我想驗證只能包含字母數字和只有一個特殊字符的字符串。我嘗試了(\\W).{1,1}(\\w+)
。Java字符串驗證只有一個字母數字和正則表達式
但是,只有當我從一個特殊的角色開始纔是真實的。但是我可以在String的任何地方有一個特殊字符。
我想驗證只能包含字母數字和只有一個特殊字符的字符串。我嘗試了(\\W).{1,1}(\\w+)
。Java字符串驗證只有一個字母數字和正則表達式
但是,只有當我從一個特殊的角色開始纔是真實的。但是我可以在String的任何地方有一個特殊字符。
使用matcher.find()
而不是matcher.match()
和搜索\\w
和去除加號(+),因爲它會匹配您string.If你的字符串中的所有字母數字字符序列只包含他們,你的正則表達式匹配整個字符串。
使用^
和$
錨指示正則表達式引擎開始從字符串的開頭匹配,並停止在字符串的結尾匹配,所以把你的正則表達式:
^(\\W).{1,1}(\\w+)$
請帶看看this關於正則表達式的Oracle(Java)教程。
嘗試此正則表達式:\w*\W?\w*
(Java字符串:"\\w*\\W?\\w*"
)
這個表達匹配零長度字符串的缺點。如果輸入必須只有一個特殊字符,請從表達式中刪除問號?
。
如果我正確理解您正則表達式,這可以解決你的問題:
([\w]+)([^\w])([\w]+)
其簡單就像我想要一個字符串,可以字母數字和只有一個特殊字符。例如。有效:abc!無效:abdc @ y! –
請表明應匹配的例子和其他人不應該。 – shift66