Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

正则练习 #30

Open
shangguanhonglei opened this issue May 3, 2021 · 0 comments
Open

正则练习 #30

shangguanhonglei opened this issue May 3, 2021 · 0 comments

Comments

@shangguanhonglei
Copy link
Owner

  1. 要求匹配颜色
    #ffbbad
    #Fc01DF
    #FFF
    #ffE
    结果为:
/#([0-9a-zA-Z]{3}|[0-9a-zA-Z]{6})/
  1. 要求匹配时间
    23:59
    02:07
    结果为:
^(((0|1)\d)|2[0-3]):[0-5]\d$

如果前面的0可以省略
结果为:

^(0?\d|1\d|2[0-3]):(0?\d|[1-5]\d)$
  1. 匹配日期
    2018-12-25
/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/

对于2018-01-05兼容简写形式18-1-5

/^(\d{4}|\d{2})-(0?[1-9]|1[0-2])-(0?[1-9]|[12]\d|3[01])$/
  1. 匹配路径
    "F:\study\javascript\regex\regular expression.pdf"
    "F:\study\javascript\regex\"
    "F:\study\javascript"
    "F:\"
/^[a-zA-Z]:\\([^\n\r?:\\/*"<>|]+\\)*[^\n\r?:\\/*"<>|]*$/
  1. 匹配id
    '
    '
/id=".*"/
//output:'id="container" class="main"'

原因:*量词默认是贪婪匹配,所以增加?变为惰性匹配

/id=".*?"/
//output:'id="container"'
  1. 不匹配任何字符
/.^/或者/$./
  1. 数字的千位分隔符
    匹配'123456789'
/(?!^)(?=(\d{3})+$)/g
output:'123,456,789'

匹配'1234 5678 912 345 6789'

/(?!\b)(?=(\d{3})+\b)/g
output: '1,234 5,678 912 345 6,789'

(?!\b) = \B 所以可以变换为

/\B(?=(\d{3})+\b)/g
  1. 货币格式化
var num = 1880
var reg1 = /(?!^)(?=(\d{3})+$)/g
var reg2 = /^/
num.toFixed(2).replace(reg1,',').replace(reg2,'$ ')
// output:$ 1,880.00
  1. 验证密码
    密码长度6-12位,由数字、小写字母、大写字母组成,但必须至少包含2种字符
    方法1:
    step1:匹配数字、小写字母、大写字母
    /^[0-9A-Za-z]{6,12}$/
    step2:必须包含数字
    /(?=.*[0-9])^[0-9A-Za-z]{6,12}$/
    step3:必须包含任意两种
    /((?=.*[0-9])(?=.*[a-z])|(?=.*[A-Z])(?=.*[a-z])|(?=.*[0-9])(?=.*[A-Z]))^[0-9A-Za-z]{6,12}$/

方法2:
/(?!^[0-9]{6,12}$)(?!^[a-z]{6,12}$)(?!^[A-Z]{6,12}$)^[0-9A-Za-z]{6,12}$/

  1. 字符串trim方法模拟
/^\s+|\s+$/g

或者

/^\s*(.*?)\s*$/g

这里使用?惰性匹配防止匹配到最后一个空字符串之前的空字符串
11. 每个单词的首字母替换为大写

/(?:^|\s)\w/g

这里也可以不使用非捕获
12. 驼峰法

/[\s_-]+(.)?/g
  1. 匹配成对标签
var str = '<span>lulin</span>'
var reg = /<([^]+)>[\d\D]*<\/\1>/
  1. 身份证
/^(\d{15}|\d{17}[\dxX])$/
  1. IPV4
/^((0{0,2}\d|0?\d{2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(0{0,2}\d|0?\d{2}|1\d{2}|2[0-4]\d|25[0-5])$/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant