木子宜居

导航

关于正则表达式的易错点

由于工作需要,在使用JavaScript过程中需要对输入参数做一些前端判断,所以接触到正则表达式。网上有很多教程可以学习参考,我只是初次接触,写一点自己的小结和遇到的易错点。

默认有一个TextBox,对其输入的内容进行检测
var re=/^[0-9]$/i --只能输入一个数字
var re=/^[0-9]/i --第一位是数字,后面任意字符且字符长度不限
var re=/^[0-9]+/i --第一个是数字,后面字符任意、长度任意
var re=/^[0-9]$/i --只能输入一个数字
var re=/^[0-9]+$/i --只能输入数字,数字长度应大于等于1
var re=/^[0-9]{5,10}$/i --只能输入数字,数字长度应大于等于5、小于等于10
var re=/^[0-9]+\.[0-9]{2}$/i --只能输入正值的数字,整数部分不为空,小数部分是两位小数(.表示任意符号,\.表示小数点),建议将小数点及小数部分作为整体,写成这样 var re=/^[0-9]+(\.[0-9]{2})$/i
var re=/^[0-9]+(\.[0-9]{2})?$/i --只能输入正值的数字,可以是整数(可不带2位小数),也可以是小数(小数位数必须为2位)
var re=/^(-)?[0-9]+(\.[0-9]{2})?$/i --可以输入正数、负数和0,如果带小数必须是2位小数
var re= /^[\u4e00-\u9fa5]+$/i --只能输入汉字,且至少一个汉字
var re=/^[a-zA-Z]\w{4,9}$/i --以字母开头,后可以跟数字、字母或下划线,长度为5~10
var re=/^\d{15}|\d{18}$/i --验证身份证号(15位或18位数字)


小括号()
()内的内容作为一个主体,里面可以是或(|),如(hello|world)表示主体是hello或world中一个。
也可以是其他,如([a-z]hello)表示以一个小写字母开始后面紧跟hello

方括号[]
[]表示取值为中括号内的任意一个字符,内不加转义符\,单个字符后面不能加长度限制,否则限制结果异常
例子:欲限制首字符为小写字母,后面为任意字符,总长度3~5
本句不正确:var re=/^[a-z]{3,5}/i 当只输入一个字母时A时,test返回false,但是输入Aaaa时返回的竟是true
正确的应该是:var re=/^[a-z]\w{2,4}/i

上尖号^
[]里面如果首位加^,整个方括号应该作为一个主体,表示不希望出现[]内的任何字符
如 [^a-zA-Z] 表示不希望出现大小写字母

总结:
字符串是主体,包括数字、大小写字母、各类符号和中文等,主体可以由多部分组成。
主体可以是单字符,也可是多字符(多字符作为整体限制时应加上小括号)。
修饰限制符包括主体对象出场顺序限制(|)、长度限制(*、+、?以及{m,n}等)、位置限制(^和$:开始和结束)等,同一部分主体可以有多个修饰限制符,修饰限制符按从左到右顺序依次生效。
修饰限制符只对离自己左侧最近的主体有效,唯一例外的是开始修饰符(^),它出现在最左端对右侧第一个主体有效

 

表达能力原因,可能自己理解但表达欠妥。如有错误请指出。

posted on 2015-01-11 13:12  木子宜居  阅读(186)  评论(0编辑  收藏  举报