跳到主要内容

常用语法/技巧/注意

注意:​

  • ^符号在开头,则表示是什么开头。而在其他地方是指非

实现一个不包含某个字符的正则​

  • 可利用?! 是负向零宽断言: (?!exp) : 断言此位置的后面不能匹配表达式 exp

负向零宽断言:用来匹配不应该出现在某个位置的模式

js
^((?!abc).*)$ // 不包含abc
  • 可利用^符号
    • ^符号在开头,则表示是什么开头。而在其他地方是指非
js
^[^abc]*$ // 不包含abc

匹配重复数字​

  • 匹配如1111、2222、3333这样的4位长度的重复数字,突一想,这不用\d{4}就解决了嚒,其实不然,因为\d{4}可以匹配1111,但也可以匹配1234啊

    bash
    # 匹配重复数字
    (\d)\1{3}

    \d匹配第一个数字,后面的\1匹配前面\d匹配的内容,重复3次,这样就可以匹配1111或2222这样的4位数字串了

只含有字母、中文、数字、下划线,32个字符​

  • 4-32符之间
js
/^[a-zA-Z0-9_\u4e00-\u9fa5]{4,32}$/

正整数​

大于0的正整数

js
/^[1-9][0-9]*$/ // 大于0的正整数

大于1的正整数​

js
/^(([1-9]\d+)|([2-9]))$/ // 大于1的正整数

0-100的正整数​

js
/^((\d|[1-9]\d)|100)$/ // 0-100的正整数

小数点保留2位/1位​

  • 小数点包含2位,包含0
js
/^(0|(0{1}\.\d{1,2})|([1-9]\d*\.{1}\d{1,2})|([1-9]+\d*))$/
  • 匹配0-100之间保留两位小数,包含100,不含100.xx
js
/^((\d|[1-9]\d)(?:\.\d{1,2})?|100)$/
  • 匹配0-100之间保留一位小数,包含100,不含100.x
js
/^((\d|[1-9]\d)(?:\.\d{1})?|100)$/
  • 匹配0-100之间保留一位小数,包含100,100.0
js
/^((\d|[1-9]\d)(?:\.\d{1})?|100|100.0)$/

不能以中横线、api、boot结尾​

  • 主要是用到了先行断言和后行断言
js
/((?<!boot)(?<!api)(?<!-))$/.test("aaboot")

去掉字符串前面的0​

js
str.replace(/\b(0+)/gi,"")