• 6172阅读
  • 3回复

求助:要想在输入域中限制输入\ / * ? : " < > |等字符,用QRegExp怎么实现? [复制链接]

上一主题 下一主题
离线crash3
 

只看楼主 倒序阅读 楼主  发表于: 2008-03-17
— 本帖被 XChinux 执行加亮操作(2008-03-17) —
要想在输入域中限制输入\ / * ? : " < > |等字符,用QRegExp怎么实现?
在线XChinux

只看该作者 1楼 发表于: 2008-03-17
用转义符。看正则表达式相关知识吧。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线crash3

只看该作者 2楼 发表于: 2008-03-18
看了还是不懂,哪位大虾能帮忙写出来嘛?
离线greg_c6666
只看该作者 3楼 发表于: 2008-08-28
对于文字字符,有11个字符被保留作特殊用途。他们是:

[ ] \ ^ $ . | ? * + ( )

这些特殊字符也被称作元字符。

如果你想在正则表达式中将这些字符用作文本字符,你需要用反斜杠“\”对其进行换码 (escape)。例如你想匹配“1+1=2”,正确的表达式为<<1\+1=2>>.

需要注意的是,<<1+1=2>>也是有效的正则表达式。但它不会匹配“1+1=2”,而会匹配“123+111=234”中的“111=2”。因为“+”在这里表示特殊含义(重复1次到多次)。

在编程语言中,要注意,一些特殊的字符会先被编译器处理,然后再传递给正则引擎。因此正则表达式<<1\+2=2>>在C++中要写成“1\\+1=2”。为了匹配“C:\temp”,你要用正则表达式<<C:\\temp>>。而在C++中,正则表达式则变成了“C:\\\\temp”。
快速回复
限100 字节
 
上一个 下一个