2012-11-27 18 views
0

下面的一段工作不正常:如何使用QRegExp

QRegExp exp ("[À-Ÿà-ÿA-Za-z0-9\\-\\_]+"); 
    if (!formatedName.contains(exp)) { 
    success = false; 
    } 

的代碼塊是驗證用戶輸入的輸入字符串。它只能接受數字,法文和英文字符,短劃線和下劃線。

實際上,代碼幾乎工作。唯一的問題是,如果我輸入合法字符,則接受特殊字符。所以,字符串「!@#@」將返回false,但字符串「hell!@^ooo」將返回true。

我應該如何正確使用正則表達式來接受我的正則表達式?

謝謝

回答

2

我建議增加^$以表明表達式應該覆蓋整個字符串,而不只是它的一部分。

QRegExp exp ("^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$"); 
    if (!formatedName.contains(exp)) { 
    success = false; 
    } 
+0

這解決了我的問題,謝謝,但奇怪的是,它帶來了一個新的。我不能再用法語口音了(比如á)......任何想法?謝謝 – peterphonic

+0

這聽起來像QRegExp庫中的一個弱點。使用以下URL測試表達式顯示它接受擴展字符:http://www.regular-expressions.info/javascriptexample.html –

1

您可以指定開始和結束的分隔符從匹配成功的字符串與停止正則表達式包含在其中的正則表達式的任何一部分。

"^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$" 

這將確保檢查整個字符串。