js正则匹配⼩数点后2位_正则实践与详解
⼀:关于数字:
1.全为数字: /^d*$/
d:匹配数字
a*:0或多次a
^a: a开头
a$:a结尾
2.⾄少n位数字:/^d{n,}$/
a{n}:a指定n次
a{n,}:a⾄少n次
a{n,m}:a指定n到m次
3.⾮零开头的数字:/^[1-9]d*$/
[xyz]: 字符集合,匹配其中任意字符,[1-3]表⽰123
ps: 如果为number类型 0231会⾃动转为231 匹配成功
4.以155,188,130,132开始的电话号码: /^(155|188|130|132)d{8}$/
x|y: 匹配x或y
5.最多两位⼩数的数字:/^d+(.d{1,2})?$/
. :对 "." 进⾏转义
a+:⼀个或多个a
():分组
:惰性匹配,匹配次数最⼩化,这⾥解读为【要么有⼀个⼩数点且字数控制在1-2】【要么有⼩数点且⼀个⼩数都没有】【即使是"1."这样也不⾏,因为没有⼩数出现惰性】
跟在数量词*,+,{} 后,都会使匹配次数最⼩化
6.正数或负数:/^(-)?d+$/
7.浮点数:/^(-)?d+.d+?$/
8.货币形式千位分隔符: JavaScirpt 货币转换成千分位正则 (⾮捕组获匹配详解)8.货币形式千位分隔符:
p = /(d)(?=(d{3})+(?!d))/g
n = 1234567.88
res = String(n).replace(p, '$1,') //1,234,567.88
= exp 正向前瞻, !exp反向前瞻,与b类似,匹配位置
变换:
p = /B(?=(d{3})+(?!d))/;
n = 12344353.88
res = String(n).split(p).join(',') // String(n).replace(p,',')
9.匹配数字 1-64
p = /^([1-9]|([1-5][0-9]{1})|(6[0-4]))$/
深信服笔试
(?:x) 整体匹配 (?:foo){1,2} 与 foo{1,2} 的区别
x(?=y) 当x后⾯是y匹配x
(?<=y)x 当x前⾯是y匹配x
x(?!y) x后⾯不是y匹配x
(?<!y)x x前⾯不是y匹配x
woc:真记不住啊,我看下我要复习多少遍
9.5 ⼀遍
9.14 ⼜它喵忘了
⼆:关于字符
1.中⽂:/^[u4e00-u9fa5]+$/
2.英⽂:/^[a-z]+$/i 或 /^[a-zA-Z]+$/
修饰符 i:忽略⼤⼩写
3.匹配英⽂和数字 /^[a-zA-Z0-9]+$/
4.匹配英⽂全名 /[a-z]+s[a-z]+/i
s匹配空⽩字符
5.去除输⼊值得前后空⽩符:
p = /^s+|s+$/g;
val=" xxx "
修饰符 g:全局匹配,没有 g 结果为"xxx "
6.匹配数字字母中⽂及下划线 /^[a-zA-Z0-9u4E00-u9FA5_]+$/ [^xyz]:不包括括号内的任意字符
7.匹配邮箱: /^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/
w:匹配数字字母下划线
8.改变姓名中名和姓的位置
str = "apple orange";
p = /(w+)s(w+)/;
newStr = place(p,"$2 $1") //"orange apple"
():括号分组,使⽤$1 ~ $n来获取匹配的内容
三.match匹配
1.获取歌曲的时间:
let str = "[00:00.12]hi nice to meet you!"
let rule = /[([d:.]+)](.+)/
let matches = str.match(rule);
let time = matches[1] //00:00.12
matches[0]: 整个字符串
matches[1]: 匹配的部分
matches[2]:剩余部分
ps:必须配合 () 进⾏分组
2.获取歌⼿和歌名
str = "艾索 - 晚安喵.mp3"
rule = /(.+)-(.*).mp3/
matches = str.match(rule);
四.其他
1.写⼀个decode函数,满⾜以下规则(不区分⼤⼩写)
decode("2[a]") //aa
decode("2[a]c") // aac
decode("2[ab]2[d]") // ababdd
decode("2[c2[b]]") // cbbcbb
答案:
function decode(str){
let reg = /(d*)[([a-z]*)]/ig;
str = place(reg,(match,number,word)=> peat(number));
st(str)){
str = decode(str);
};
return str;
正则表达式获取括号内容}
PS:replace第⼆个参数可以是⼀个函数,该函数的参数分别为:匹配字符串,剩余是$1 到 $n 的顺序。
2.写⼀个函数把数值转化为对应的中⽂表达⽅式
限制条件:需要⽀持⼩数
⽰例:
formate(123004.123) //⼗⼆万三千零四点⼀⼆三
formate(123456789) // ⼀亿⼆千三百四⼗五万六千七百⼋⼗九
formate(100000000000000000000000) //⼀千万亿亿
formate(1100000003.001) // ⼗⼀亿零三点零零⼀
其他:货币千分位分割可以使⽤API:(会丢失⼩数位)
n = 12345678;
res = n.toLocaleString();
Appendix:
MDN
前端进阶必须知道的正则表达式知识
持续更新中 ...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论