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);