找回密码
 加入
搜索
查看: 4538|回复: 6

[效率算法] [已解决]正则匹配中文、英文、数字

  [复制链接]
发表于 2011-3-28 19:00:01 | 显示全部楼层 |阅读模式
本帖最后由 kxing 于 2011-3-29 01:06 编辑

请问如何才能匹配中文、英文、数字呢?
也就是不要任何符号!!!希望高手解答,多谢!!
$name="你好123abc"
if stringregexp($name,"") then
msgbox(0,'ok','用户名正确')
endif
发表于 2011-3-28 19:39:52 | 显示全部楼层
#include <array.au3>
$str='中文ABC123'
$fin=_han($str)
_ArrayDisplay($fin)
$fin=_han($str,1)
_ArrayDisplay($fin)
$fin=_han($str,2)
_ArrayDisplay($fin)

func _han($str,$flag=0)
        local $array
        if $flag>2 or $flag<0 then $flag=0
        Select 
                case $flag=0
                        $array=StringRegExp($str,'[\x{4e00}-\x{9fa5}]+',3)
                        if UBound($array)<0 then return SetError(1,1,0)
                case $flag=1
                        $array=StringRegExp($str,'[a-zA-Z]+',3)
                        if UBound($array)<0 then return SetError(1,1,0)
                Case $flag=2
                        $array=StringRegExp($str,'[\d]+',3)
                        if UBound($array)<0 then return SetError(1,1,0)
                EndSelect
        return $array
EndFunc
                        
发表于 2011-3-28 21:56:12 | 显示全部楼层
本帖最后由 afan 于 2011-3-28 22:19 编辑

这样试试(一般下划线也算合法)
$name = "你好123abc"
If StringRegExp($name, '^([^\x00-\xff]|\w)+$') Then MsgBox(0, 'ok', '用户名正确')
发表于 2011-3-28 22:13:02 | 显示全部楼层
晕,还以为是要匹配中文或匹配英文.
结果是检测用户名是否合法.
发表于 2011-3-28 22:21:38 | 显示全部楼层
晕,还以为是要匹配中文或匹配英文.
结果是检测用户名是否合法.
3mile 发表于 2011-3-28 22:13



    我也是猜的,估计LZ是想检测是否合法~
发表于 2011-3-28 22:29:32 | 显示全部楼层
本帖最后由 easefull 于 2011-3-28 22:33 编辑

感谢3mile,又让我学到一招
#include <array.au3>
$sText    = '中文ABC.123'
$asResult = StringRegExp($sText,'[a-zA-Z\d\x{4e00}-\x{9fa5}]+', 3)
If Not IsArray($asResult) Or UBound($asResult) <> 1 Or $sText <> $asResult[0] Then
        MsgBox(4096 + 48, "Error", "非法的用户名:        '" & $sText & "'" & @LF & "可用的用户名:        '" & $asResult[0] & "'")
Else
        MsgBox(4096, "OK", "可用的用户名:        '" & $sText & "'")
EndIf

评分

参与人数 1金钱 +10 收起 理由
zhanghdong + 10

查看全部评分

 楼主| 发表于 2011-3-29 01:05:45 | 显示全部楼层
回复 3# afan

我还以为 | 只能匹配其中一个表达式呢
要么匹配|前面表达式,要么匹配|后面表达式。
看来我错了!!!!

哎,小括号的用处真多。。。
感谢楼上几个朋友了!!!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-3 02:05 , Processed in 0.088571 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表