如何用正则表达式判断字符串长度

runit 2009-07-15 08:24:20
在textbox中输入字符串,字符可以为中文、英文或各种字符,使用控件验证,如何用正则表达式判断字符串长度,比如字符串长度小于等于10个?
另外一个汉字和一个英文字符是否都占用相同的位置?也就是说,限制10个字符,可以输入10个英文字母,是否可以输入10个汉字?谢谢。
...全文
38759 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Johan. 2011-11-08
  • 打赏
  • 举报
回复
有用。
flien1 2009-07-16
  • 打赏
  • 举报
回复
请用设置TEXTBOX内MAXlength属性
控制最大输入长度。
这样的话,输入的汉字只占1个单位,和英文,符号所占单位相同
John_Hee 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
String.prototype.len=function(){return this.replace([^x00-xff]/g,"").length;}

public static int GetLength(string strSource)
        {
            Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
            int nLength = strSource.Length;
            for(int i=0; i <strSource.Length; i++)
            {
                if (regex.IsMatch(strSource.Substring(i,1)))
                {
                    nLength++;
                }
            }
            return nLength;
        }

[/Quote]
同意
wuyq11 2009-07-15
  • 打赏
  • 举报
回复
String.prototype.len=function(){return this.replace([^x00-xff]/g,"").length;}

public static int GetLength(string strSource)
{
Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
int nLength = strSource.Length;
for(int i=0; i<strSource.Length; i++)
{
if (regex.IsMatch(strSource.Substring(i,1)))
{
nLength++;
}
}
return nLength;
}
十八道胡同 2009-07-15
  • 打赏
  • 举报
回复
写个js脚本还简单些
程序漫步 2009-07-15
  • 打赏
  • 举报
回复 2
验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0) ^\d+$
验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?$ 0 0 0
bhtfg538 2009-07-15
  • 打赏
  • 举报
回复
。。。。
LZ的表达能力啊


if(this.value.length>10)alert('fuck you,Your input 太XX many .)
-过客- 2009-07-15
  • 打赏
  • 举报
回复
汗,还真没是不知所云。。。

你倒底是验证字符数还是字节数?
验证控件中可以验证字符数,不可以验证字节数,验证字节数需自己写js脚本验证
wxg22526451 2009-07-15
  • 打赏
  • 举报
回复
汉字占2个字节
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧