匹配用户名的asp正则表达式(包括中文)
July 13th, 2008
Categories: 问答
求ASP 用户名 表达式
用户名长度在2-20字符之间,由中文/大小写字母/数字/中划线-/下线线_组成。
这个问题不算难,只要下边一行核心代码就能搞定:
1 | "^[-_a-zA-Z0-9\u4e00-\u9fa5]{2,20}$" |
关键是没有使用过ASP语言。按此页的提示,设置了ASP环境。查询了一些在线的入门级ASP教程之后,解答如下:
1 2 3 4 5 6 7 | <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文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <% 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) %> |
运行界面见附图。
另外,还有一些正则表达式可供参考:
匹配中文字符的正则表达式:
1 | [\u4e00-\u9fa5] |
匹配双字节字符(包括汉字在内)正则表达式:
1 | [^\x00-\xff] |
匹配空行的正则表达式:
1 | \n[\s| ]*\r |
匹配HTML标记的正则表达式:
1 | / <(.*)> .* <\/\1> | <(.*) \/> / |
匹配首尾空格的正则表达式:
1 | (^\s*)|(\s*$) |
用正则表达式限制只能输入中文:
1 | onkeyup= "value=value.replace(/[^\u4E00-\u9FA5]/g, ' ') " onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\u4E00-\u9FA5]/g, ' ')) " |
用正则表达式限制只能输入全角字符:
1 | onkeyup= "value=value.replace(/[^\uFF00-\uFFFF]/g, ' ') " onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\uFF00-\uFFFF]/g, ' ')) " |
用正则表达式限制只能输入数字:
1 | onkeyup= "value=value.replace(/[^\d]/g, ' ') "onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\d]/g, ' ')) " |
用正则表达式限制只能输入数字和英文:
1 | onkeyup= "value=value.replace(/[\W]/g, ' ') "onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\d]/g, ' ')) " |
asp可以用JS写的……
[Reply]