• 关于正则表达式的易错点


    由于工作需要,在使用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}等)、位置限制(^和$:开始和结束)等,同一部分主体可以有多个修饰限制符,修饰限制符按从左到右顺序依次生效。
    修饰限制符只对离自己左侧最近的主体有效,唯一例外的是开始修饰符(^),它出现在最左端对右侧第一个主体有效

     

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

  • 相关阅读:
    [LintCode] Longest Substring Without Repeating Characters
    [LeetCode] 416. Partition Equal Subset Sum 相同子集和分割
    [LintCode] Reverse Linked List 倒置链表
    [LintCode] Median of Two Sorted Arrays 两个有序数组的中位数
    [LeetCode] 415. Add Strings 字符串相加
    [LintCode] Longest Consecutive Sequence 求最长连续序列
    [LeetCode] 411. Minimum Unique Word Abbreviation 最短的独一无二的单词缩写
    [LeetCode] 410. Split Array Largest Sum 分割数组的最大值
    [LeetCode] Longest Palindrome 最长回文串
    [LeetCode] Valid Word Abbreviation 验证单词缩写
  • 原文地址:https://www.cnblogs.com/mzyj/p/4216402.html
Copyright © 2020-2023  润新知