[已解决]正则匹配中文、英文、数字
本帖最后由 kxing 于 2011-3-29 01:06 编辑请问如何才能匹配中文、英文、数字呢?
也就是不要任何符号!!!希望高手解答,多谢!!$name="你好123abc"
if stringregexp($name,"") then
msgbox(0,'ok','用户名正确')
endif #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 22:19 编辑
这样试试(一般下划线也算合法)$name = "你好123abc"
If StringRegExp($name, '^([^\x00-\xff]|\w)+$') Then MsgBox(0, 'ok', '用户名正确') 晕,还以为是要匹配中文或匹配英文.
结果是检测用户名是否合法. 晕,还以为是要匹配中文或匹配英文.
结果是检测用户名是否合法.
3mile 发表于 2011-3-28 22:13 http://autoitx.com/images/common/back.gif
我也是猜的,估计LZ是想检测是否合法~ 本帖最后由 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
回复 3# afan
我还以为 | 只能匹配其中一个表达式呢
要么匹配|前面表达式,要么匹配|后面表达式。
看来我错了!!!!
哎,小括号的用处真多。。。
感谢楼上几个朋友了!!!!
页:
[1]