`
zbm2001
  • 浏览: 15839 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一个正则验证需求

阅读更多
1)以数字,逗号,"-"三个符号组成
2)以数字开头和结尾.
3)"-"前后必须是数字

两个表达式,逻辑比较简洁、易懂:

var reg = /^\d[,\d-]*\d$/g;
var reg1 = /\D-|-\D/; // 发现包含有“-”且其前后不为数字

var str = "11,1,1-11341131";

alert(reg.test(str) && !reg1.test(str))

方案二,一个表达式,逻辑稍复杂:

下面就一个表达式展开推导分析:

首先,要让包含有“-”字符时,其前后必须为数字,这个很简单:
var reg = /^\d(,|\d|\d-\d)*\d$/g;

但是“-”字符与首字符或尾字符数字相接就无法通过验证,但其符合条件,
先解决“-”与尾字符数字相接,也很简单,先前瞻一下:
var reg = /^\d(,|\d|\d-(?=\d))*\d$/g;

那后瞻呢?其实本例的情况比较简单,解决首字符数字与“-”相接就行:
var reg2 = /^\d(-(?=\d))?(,|\d|\d-(?=\d))*\d$/g;

ok,因为“-”前后总是需要前后伴随数字,你甚至可以合并一下:
var reg2 = /^\d(-(?=\d))?(,|\d(-(?=\d))?)*\d$/g;


js不像.net及其他一些语言内置了那么多正则方法,
不支持后瞻(零宽度正(负)回顾后发断言)(?<=exp)(?<!exp),
只支持前瞻(零宽度正(负)预测先行断言)(?=exp)(?!exp)
在某些情况下,你可以使用一些技巧来实现类似的后瞻应用
0
0
分享到:
评论
1 楼 yiminghe 2009-06-13  
零宽挺难用,竟然被你写出来了。。。。。

我也提到了:零宽断言正则表达式的Javascript应用 http://yiminghe.iteye.com/blog/405390

相关推荐

    java script 正则表达式验证大全

    评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:(S*?)[^&gt;]*&gt;.*?|*? /&gt; 评注:网上流传的版本太糟糕,...

    比较常用证件正则表达式验证大全

    最近做项目,有项目需求需要对各种常用...而港澳通行证,台湾通行证,护照这些证件,在网上没有搜到正则验证的方法,后来经过一番折腾,结合validator这个验证插件写了一些代码,在此分享给大家,需要的朋友可以参考下

    验证姓名的正则表达式

    今天自己完善了一个。 过滤的规则: 1.纯中文或者纯英文 2.有圆点组合的中文 大卫·波菲尔·多可汗 圆点前的中文至少1个,最多20个。圆点至多可有5个。都可以根据需求更改。 3.有空格 或者 小数点 或者 小数点...

    ios-HZQRegexTestter(正则表达验证工具类,满足大众开发者验证需求,已封装且一句话验证。).zip

    正则表达式验证工具类,满足大众开发者验证需求,已封装且一句话即可验证,主要包括: /** * 1.用户名 - 2.密码 (英文、数字都可,且不包含特殊字符 */ (BOOL)validateStrWithRange:(NSString *)range str:...

    RegexTextBox可验证文本框(.net c# winform)正则自定义验证控件

    控件使用的是visual studio2010开发,对TextBox进行了改写,附带了验证功能,不需要开发人员再次对TextBox的内容进行验证,也不需要在相关的按钮里写判断语句,只需要配置下属性或者根据需求自定义验证事件即可,...

    如何用javascript正则表达式验证身份证号码是否合法

    在用户注册页面有些需求要求的比较严格,需要对身份证验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客。此篇文章主要是讲解如何用javascript正则表达式验证身份证号码是否合法,需要的朋友可以参考下

    正则表达式经典实例

     通过一个精练的教程理解正则表达式的基本原理和技巧;  在不同的编程语言和脚本语言中有效使用正则表达式;  学习如何对输入进行合法性检查和格式化;  处理单词、文本行、特殊字符和数值;  学习如何在...

    C# 最全的日期正则表达式,没有之一

    而实际应用中,日期的范围基本上不会超出DateTime所规定的范围,所以正则验证取其中常用的日期范围即可。 2.2 什么是闰年 (以下摘自百度百科) 闰年(leap year)是为了弥补因人为历法规定造成的年度天数与地球实际...

    正则表达式经典实例.pdf

     通过一个精练的教程理解正则表达式的基本原理和技巧;  在不同的编程语言和脚本语言中有效使用正则表达式;  学习如何对输入进行合法性检查和格式化;  处理单词、文本行、特殊字符和数值;  学习如何在URL、...

    正则表达式

    说明:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r 说明:可以用来删除空白行 匹配HTML标记的正则表达式:&lt;(\S*?)[^&gt;]*&gt;.*?|*? /&gt; 说明:网上流传的...

    正则表达式30分钟入门教程

    和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一...

    所有常用的正则表达式

    评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:(S*?)[^&gt;]*&gt;.*?|*? /&gt; 评注:网上流传的版本太...

    表单验证和正则表达式等等

    该压缩包里包括有js版的日历,有验证码,表单验证,基本的验证需求里面都有。还有很多基本的正则表达式。希望能帮到有需要的人

    正则表达式30分钟入门教程。轻松简单易学

    现在WEB 2.0开发 很多东西需要用户验证,而正则表达式正好弥补了 验证的需求 这里的教程让大家很轻松的学习正则表达式 让大家对正则表达式有个初步的了解

    JS中验证整数和小数的正则表达式

     网上很多关于验证小数的正则表达式,但是很多都不是百分百正确,所以我结合一些前辈的经验,自己写了一个。  验证非0开头的无限位整数和小数。整数支持无限位,小数点前支持无限位,小数点后最多保留两位。  js...

    Java-PHP正则表达式的使用

     验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”  正确格式为:“01”“09”和“1”“31”。  匹配中文字符的正则表达式: [u4e00-u9fa5]  匹配双字节字符(包括汉字在内):[^x00-xff]  匹配空行...

    表单验证控件 简单

    1、验证插件支持正则表达式验证,函数验证,ajax异步验证,支持对比验证,并支持对表单的自定义属性或指定属性进行验证,应该足矣满足常用软件及网站开发需求。(可根据自己需求,手动添加验证方式) 2、插件支持...

    js 正则表达式 验证 a/b/c 格式的类型数据

    首先说下 我的需求 我要对一个文本框中输入的内容格式做出要求 内容 必须是 “字符串” “字符串”+“/”+“字符串” “字符串”+“/”+“字符串”+”/”+“字符串” “字符串”+“/”+“字符串”+”/”+“字符串”+...

    JavaScript正则表达式验证身份证号码是否合法(两种方法)

    下面来说说一个身份证号里面包含了多少的信息:  1、号码的结构  公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序...

Global site tag (gtag.js) - Google Analytics