深柳堂

匹配用户名的asp正则表达式(包括中文)

有人在正则表达式中文站贴出这样一道问题:

求ASP 用户名 表达式

用户名长度在2-20字符之间,由中文/大小写字母/数字/中划线-/下线线_组成。

这个问题不算难,只要下边一行核心代码就能搞定:

"^[-_a-zA-Z0-9\u4e00-\u9fa5]{2,20}$"

关键是没有使用过ASP语言。按此页的提示,设置了ASP环境。查询了一些在线的入门级ASP教程之后,解答如下:

 
<form action="verify.asp" method="post">
姓名:
<input name="name" type="text" />
 
<input name="Submit" type="submit" value="提交" />
<input name="Submit2" type="reset" value="重置" />
</form>

它调用以下verify.asp文件:

&lt;%
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = False ' 设置是否区分大小写。
retVal = regEx.Test(strng) ' 执行搜索测试。
If retVal Then
RegExpTest = "合法用户名。"
Else
RegExpTest = "非法用户名。"
End If
End Function
 
name=request.form("name")
psw=request.form("psw")
sex=request.form("sex")
city=request.form("city")
Response.write RegExpTest("^[-_a-zA-Z0-9\u4e00-\u9fa5]{2,20}$", name)
%&gt;

运行界面见附图。

另外,还有一些正则表达式可供参考:

匹配中文字符的正则表达式

[\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内)正则表达式

[^\x00-\xff]

匹配空行的正则表达式

\n[\s|   ]*\r

匹配HTML标记的正则表达式

/ &lt;(.*)&gt; .* &lt;\/\1&gt; | &lt;(.*)   \/&gt; /

匹配首尾空格的正则表达式

(^\s*)|(\s*$)

正则表达式限制只能输入中文:

onkeyup= "value=value.replace(/[^\u4E00-\u9FA5]/g, ' ') "   onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\u4E00-\u9FA5]/g, ' ')) "

正则表达式限制只能输入全角字符:

onkeyup= "value=value.replace(/[^\uFF00-\uFFFF]/g, ' ') "   onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\uFF00-\uFFFF]/g, ' ')) "

正则表达式限制只能输入数字:

onkeyup= "value=value.replace(/[^\d]/g, ' ')   "onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\d]/g, ' ')) "

正则表达式限制只能输入数字和英文:

onkeyup= "value=value.replace(/[\W]/g, ' ')   "onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\d]/g, ' ')) "
33