xms77 发表于 2012-4-13 16:29:26

【已解决】正则问题求助

本帖最后由 xms77 于 2012-4-13 20:11 编辑

我想检查用户输入的字符串,只能满足如下要求:
DSD,SAG,GGH,....(重复前面的格式 3位连续字符串用逗号相隔)或者
GHH(就只有一个3位连续的字符串,有没有逗号无所谓。)
用StringRegExp("DSD,SAG,GGH,RTYU",'\w{3},{0,1}',0)不行,连续的4位字符串也能匹配。

user3000 发表于 2012-4-13 16:54:10

本帖最后由 user3000 于 2012-4-13 17:01 编辑

StringRegExp($Input ,'^(?:{3},)?{3}(?:{3},)?$', 0)

user3000 发表于 2012-4-13 17:20:15

回复 1# xms77


   
不好意思, 二楼的代码还是有错, 那个逗号的位置没注意'放'对位置!
下面这个, 自己已测试过, 可以成功验证到.StringRegExp($Input ,'^(?:{3},)?{3}(?:,{3})?, 0)

user3000 发表于 2012-4-13 17:23:10

回复 3# user3000


    晕了, 粘帖上来的, 怎么还少了一个 $   美元字符?
   应该在最后一个 问题 加上这个字符.

其名其妙了, 直接复制粘贴还能把我的字符吃了一个!

lixiaolong 发表于 2012-4-13 17:47:25

本帖最后由 lixiaolong 于 2012-4-13 17:52 编辑

回复 1# xms77 $Input = "DSD,SAG,GGH,RTYU"
$a = StringRegExp($Input, '^(\w{3},?)+(?=(?<!,)$)', 0)

MsgBox(0, "", $a)GHH(就只有一个3位连续的字符串,有没有逗号无所谓。)
有没有逗号无所谓用这个就可以.^(\w{3},?)+$

xms77 发表于 2012-4-13 19:49:29

回复 3# user3000
谢谢3000兄,数字也是合法的字符。我试试改编一下你的代码试试!

xms77 发表于 2012-4-13 20:03:28

回复 5# lixiaolong
xiaolong兄,请教$是什么意思?另外如果有空格也允许,只要3位的字符串是连续的就行,该怎么修改?

xms77 发表于 2012-4-13 20:10:20

回复 5# lixiaolong
貌似这样可以允许水平空白符的存在了。感谢你的帮忙!
^(\h*\w{3}\h*,?)+$

xms77 发表于 2012-4-13 20:13:12

回复 4# user3000
呵呵,我好像吃到一个$,但是不知道在这里是什么意思,糊涂啊!

lixiaolong 发表于 2012-4-13 20:54:06

回复 7# xms77

$ 和 \Z 是一个意思的~

xms77 发表于 2012-4-13 22:11:04

回复 10# lixiaolong
xiaolong兄,发现个问题,好像如果连续6位的字符串也能匹配?

xms77 发表于 2012-4-13 22:13:58

回复 10# lixiaolong
我说好像没有看到$的说明,\Z就明白了。

lixiaolong 发表于 2012-4-13 22:44:46

回复 11# xms77

后面不是\w的3个\w就行了~^(\h*\w{3}\h*(?!\w),?)+$

xms77 发表于 2012-4-13 23:17:01

回复 13# lixiaolong
再次感谢,看来我正则还需要加强练习啊!
页: [1]
查看完整版本: 【已解决】正则问题求助