kxing 发表于 2011-3-28 19:00:01

[已解决]正则匹配中文、英文、数字

本帖最后由 kxing 于 2011-3-29 01:06 编辑

请问如何才能匹配中文、英文、数字呢?
也就是不要任何符号!!!希望高手解答,多谢!!$name="你好123abc"
if stringregexp($name,"") then
msgbox(0,'ok','用户名正确')
endif

3mile 发表于 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,'+',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
                       

afan 发表于 2011-3-28 21:56:12

本帖最后由 afan 于 2011-3-28 22:19 编辑

这样试试(一般下划线也算合法)$name = "你好123abc"
If StringRegExp($name, '^([^\x00-\xff]|\w)+$') Then MsgBox(0, 'ok', '用户名正确')

3mile 发表于 2011-3-28 22:13:02

晕,还以为是要匹配中文或匹配英文.
结果是检测用户名是否合法.

afan 发表于 2011-3-28 22:21:38

晕,还以为是要匹配中文或匹配英文.
结果是检测用户名是否合法.
3mile 发表于 2011-3-28 22:13 http://autoitx.com/images/common/back.gif


    我也是猜的,估计LZ是想检测是否合法~

easefull 发表于 2011-3-28 22:29:32

本帖最后由 easefull 于 2011-3-28 22:33 编辑

感谢3mile,又让我学到一招#include <array.au3>
$sText    = '中文ABC.123'
$asResult = StringRegExp($sText,'+', 3)
If Not IsArray($asResult) Or UBound($asResult) <> 1 Or $sText <> $asResult Then
        MsgBox(4096 + 48, "Error", "非法的用户名:        '" & $sText & "'" & @LF & "可用的用户名:        '" & $asResult & "'")
Else
        MsgBox(4096, "OK", "可用的用户名:        '" & $sText & "'")
EndIf

kxing 发表于 2011-3-29 01:05:45

回复 3# afan

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

哎,小括号的用处真多。。。
感谢楼上几个朋友了!!!!
页: [1]
查看完整版本: [已解决]正则匹配中文、英文、数字