exp 正則表達式30分鍾入門教程 http://deerchao.net/tutorials/regex/regex.htm
元字符 .*^\d\b\s,當然還有\,還有中括號[]
.是一個元字符,匹配除了換行符以外的任意字符。
*同樣是元字符,.*連在一起就意味着任意數量的不包含換行的字符。
這里的\d是個新的元字符,匹配一位數字(0,或1,或2,或……)。-不是元字符,只匹配它本身(或者減號,或者中橫線)
舉例1:0\d{2}-\d{8} 相當於 0\d\d-\d\d\d\d\d\d\d\d匹配這樣的字符串:以0開頭,然后是兩個數字,然后是一個連字號“-”,最后是8個數字(也就是中國的電話號碼。當然,這個例子只能匹配區號為3位的情形)。
\b是正則表達式規定的一個特殊代碼,即單詞分界處
舉例2:\bhi\b.*\bLucy\b的意思就很明顯了:先是一個單詞hi,然后是任意個任意字符(但不能是換行),最后是Lucy這個單詞。
元字符:\s匹配任意的空白符,包括空格,制表符(Tab),換行符,中文全角空格等。
\w匹配字母或數字或下划線或漢字等。
舉例3:\d+匹配1個或更多連續的數字。而+則匹配重復1次或更多次。
元字符^(和數字6在同一個鍵位上的符號)和$都匹配一個位置,這和\b有點類似。
舉例4:^\d{5,12}$。要求你填寫的號必須為5位到12位數字
字符轉義:得使用\來取消這些字符的特殊意義。因此,你應該使用\.和\*。當然,要查找\本身,你也得用\\
中括號:[aeiou]就匹配任何一個英文元音字母,[.?!]匹配標點符號(.或?或!)。
舉例5:[0-9]代表的含意與\d就是完全一致的:一位數字;同理[a-z0-9A-Z_]也完全等同於\w(如果只考慮英文的話)。
// QRegExp exp("[.?!+*]"); // 把這些字符都去掉。
Windows目錄禁止九個字符\/:*?"<>|
QRegExp exp("[/:*?]"); // fixme 無法包括\\,不得不單獨處理 strName = strName.replace(exp, ""); strName = strName.replace("\\", ""); qDebug() << strName; if (strName.length()>MAX_NAME) strName = strName.left(MAX_NAME); task_edit->setText(strName);