社区
Qt
帖子详情
求教:只能输入汉字的正则表达式
zzsse
2010-11-25 06:45:02
rt
我用的是[\u4e00-\u9fa5],但是中文输入法下的"、"和"……"仍然能通过,很困惑
...全文
2079
14
打赏
收藏
求教:只能输入汉字的正则表达式
rt 我用的是[\u4e00-\u9fa5],但是中文输入法下的"、"和"……"仍然能通过,很困惑
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dbzhang800
2010-11-30
打赏
举报
回复
[Quote=引用 13 楼 zzsse 的回复:]
我主要就是这个目的,用的就是这几行代码,8楼说的可以解决,用QString::fromUtf8()转一下str就可以了
[/Quote]
看你这样描述,我猜你的编码问题现在仍是一知半解:
http://hi.baidu.com/cyclone/blog/item/9d7293130e5a498d6538dbf1.html
zzsse
2010-11-30
打赏
举报
回复
[Quote=引用 9 楼 dbzhang800 的回复:]
引用 6 楼 zzsse 的回复:
这个不能通过才对啊 现在结果是通过了, 我的要求是只能输入汉字、数字、字母和下划线
是啊,我说的测试正常就是你现在描述的这个啊,不能通过。没发现你说的程序的结果。
另外,你不能把你测试的真实代码贴出来么?一个完整的测试这个问题的程序最多也就10来行代码。你贴出或许看出来到底是什么问题。你一开始就把问题限定死了,对你解决问题可能起反作用
[/Quote]
我主要就是这个目的,用的就是这几行代码,8楼说的可以解决,用QString::fromUtf8()转一下str就可以了
zzsse
2010-11-30
打赏
举报
回复
[Quote=引用 8 楼 darkdong 的回复:]
1.我是看QRegExp文档说匹配unicode是用\x,不过实际我试了试\u貌似也可以
2.我这里看到你发的帖子是bool match = rx.exactMatch();这里确实没有str参数
3.我试了你的正则表达式是正确的,基本上能达到你要的效果
4.我猜你没弄对的原因大概是因为你直接使用了QString str = "……、";硬编码
这个跟你当前文件的编码方式有关,比如你的源……
[/Quote]
恩,正如你所说,正则表达式没问题,那个str用QString::fromUtf8(),就可以了...
zhaoli_1956
2010-11-30
打赏
举报
回复
[Quote=引用 7 楼 zzsse 的回复:]
引用 5 楼 darkdong 的回复:
qt中正则表达式匹配unicode的写法为\xhhhh而不是\uhhhh
另外反斜杠要double
另外你那个exactMatch参数就没写str
另外用了exactMatch就不必用^$包住
另外还是我上面说的顿号、根本就不在汉字的编码范围内
另外汉字的编码范围不只是4e00-9fa5
我要的效果是只能输入汉字、字母、数字和下划线……
[/Quote]
linux下转义字符\要double,看具体是在哪个平台下
zzsse
2010-11-27
打赏
举报
回复
[Quote=引用 5 楼 darkdong 的回复:]
qt中正则表达式匹配unicode的写法为\xhhhh而不是\uhhhh
另外反斜杠要double
另外你那个exactMatch参数就没写str
另外用了exactMatch就不必用^$包住
另外还是我上面说的顿号、根本就不在汉字的编码范围内
另外汉字的编码范围不只是4e00-9fa5
[/Quote]
我要的效果是只能输入汉字、字母、数字和下划线
1.我试过了,用\xhhhh达不到我要的效果,用\uhhhh除了我说的……和、之类的特殊符号之外 能达到我要的效果。
2.\u就是转义字符,不用加double反斜杠吧。
3.exactMatch参数里我写了str.
4.这里加不加^$效果差不多。
5.顿号不在汉字编码范围内,但这里却能通过,所以我很困惑啊
6.我也不清楚汉字的编码范围,这是我在网上找的,具体的范围请仁兄赐教
zzsse
2010-11-27
打赏
举报
回复
[Quote=引用 4 楼 dbzhang800 的回复:]
引用 3 楼 zzsse 的回复:
QString str = "……、";
QRegExp rx("^[\u4e00-\u9fa5\\w]+$");
bool match = rx.exactMatch(str);
if(match)
printf("match...\n");
else
printf("not match...");
测试正常,没看到你描述的结果
[/Quote]
这个不能通过才对啊 现在结果是通过了, 我的要求是只能输入汉字、数字、字母和下划线
YOU_ARE_MY_FAVORITE
2010-11-27
打赏
举报
回复
路过,学习了。。。
dbzhang800
2010-11-27
打赏
举报
回复
[Quote=引用 6 楼 zzsse 的回复:]
这个不能通过才对啊 现在结果是通过了, 我的要求是只能输入汉字、数字、字母和下划线
[/Quote]
是啊,我说的测试正常就是你现在描述的这个啊,不能通过。没发现你说的程序的结果。
另外,你不能把你测试的真实代码贴出来么?一个完整的测试这个问题的程序最多也就10来行代码。你贴出或许看出来到底是什么问题。你一开始就把问题限定死了,对你解决问题可能起反作用
巴依老爷
2010-11-27
打赏
举报
回复
1.我是看QRegExp文档说匹配unicode是用\x,不过实际我试了试\u貌似也可以
2.我这里看到你发的帖子是bool match = rx.exactMatch();这里确实没有str参数
3.我试了你的正则表达式是正确的,基本上能达到你要的效果
4.我猜你没弄对的原因大概是因为你直接使用了QString str = "……、";硬编码
这个跟你当前文件的编码方式有关,比如你的源文件是UTF-8编码的,那么你应该这样:
QString str = QString::fromUtf8("……、");测试的时候你可以用一个QLineEdit作为输入,
这样从里面拿出来的内容保证是一个合法的QString
5.最常用的汉字编码都在U+4e00-U+9FFF,还有一些补充兼容块,如果不需要那么精确的话可以忽略
巴依老爷
2010-11-26
打赏
举报
回复
qt中正则表达式匹配unicode的写法为\xhhhh而不是\uhhhh
另外反斜杠要double
另外你那个exactMatch参数就没写str
另外用了exactMatch就不必用^$包住
另外还是我上面说的顿号、根本就不在汉字的编码范围内
另外汉字的编码范围不只是4e00-9fa5
dbzhang800
2010-11-26
打赏
举报
回复
[Quote=引用 3 楼 zzsse 的回复:]
QString str = "……、";
QRegExp rx("^[\u4e00-\u9fa5\\w]+$");
bool match = rx.exactMatch(str);
if(match)
printf("match...\n");
else
printf("not match...");
[/Quote]
测试正常,没看到你描述的结果
zzsse
2010-11-26
打赏
举报
回复
QString str = "……、";
QRegExp rx("^[\u4e00-\u9fa5\\w]+$");
bool match = rx.exactMatch();
if(match)
printf("match...\n");
else
printf("not match...");
巴依老爷
2010-11-25
打赏
举报
回复
标点符号本来就不在那个范围里
dbzhang800
2010-11-25
打赏
举报
回复
贴你的测试用代码
数据处理救星降世Power Query
0/ Excel数据处理新利器来了,准备好了吗? 1/ 比网红函数VLOOKUP还全面的功能。——查(查询) 2/ 取其精华,去其糟粕。...——聚(聚合) 9/ 我自己的难题自己造函数,不
求教
别人。——技法(自定义函数)
JS
正则表达式
【1】
经典JavaScript
正则表达式
实战 1、匹配结尾的数字 来源:如何用 JAVASCRIPT
正则表达式
取出字符串最后一组数字,谢谢 如 30CAC0040 取出40 3SFASDF92 取出92 正则如下:/\d+$/g 2、统一空格个数 来源:正则匹配...
正则表达式
(二)
看了
正则表达式
(一) 感觉实在是太复杂了,索性就将常用的js
正则表达式
进行下整理。 匹配结尾的数字 来源:如何用JAVASCRIPT
正则表达式
取出字符串最后一组数字,谢谢 如 30CAC0040 取出40 3SFASDF92 取出...
鸿运应用开发学习-发现了一个TextInput组件中使用
正则表达式
后出现的BUG
向华为提交问题后,华为工程师反馈使用
正则表达式
,我按学习到的知识,在inputFilter中设置好
正则表达式
后,却发现可以
输入
0-9的数字,但仍不能
输入
负号和小数点。再次向华为反馈,这次工程师没有解决,将问题上升至...
经典JavaScript
正则表达式
实战
来源:如何用 javascript
正则表达式
取出字符串最后一组数字,谢谢 如 30CAC0040 取出40 3SFASDF92 取出92 正则如下:/\d+$/g 统一空格个数 来源:正则匹配空格的问题 字符串内字符键有空格,但是空格的数量...
Qt
16,216
社区成员
26,595
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章