前端设计——JavaScript正则表达式疾速入门

媒介:正则表达式时处置惩罚字符串中经常使用的手段,本文以简朴的体式格局,疾速展现了JavaScript中正则相干的基本知识点。文末还供应了几个简朴的正则相干面试题。个人总结,若有毛病,还望斧正,

JavaScript正则表达式疾速入门

两种新建语法

字面量法

var patt = /w+/i;

RegExp对象法

(1)var patt = new RegExp(‘/w+/i’);

(2)var patt = new RegExp(‘w+’,’i’);

个中第二个变量示意修饰符,在ES5中,(1)要领不许可加第二个变量,ES6中则许可,且背面的修饰符会掩盖原修饰符。

五个修饰符

i:无视大小写
g:全局婚配
m:多行婚配
u:用于处置惩罚大于uFFFF的字符(ES6新增)
y:相似g,但是有粘连特性(ES6新增)

部份属性

1、reg.sticky

用于检测是不是设置y修饰符,返回true/false(ES6新增)

2、reg.source

返回表达式正文(ES5)

3、reg.flags

返回修饰符(ES6新增)

量词系列

基本量词

? (0或1)
* (0个及以上)
+ (1个及以上)

开首末端

^ 开首
$ 末端

指定量词

{x} 指定数目
{x,} 大于X数目
{x,y} x,y之间

特别

?=str 背面紧接str的

?!str 背面没有紧接str的

语法系列

RegExp要领

1、compile要领

patt.compile(newPatt)

用于编译正则,或许转变正则内容

2、exec要领

patt.exec(str)

假如找到了,返回响应的字符串,假如没有,返回null

3、test要领

patt.test(str)

假如找到了,返回true,不然返回false

String要领

1、search()

str.search(patt)

假如找到了,返回肇端位置,不然返回-1

2、match()

str.match(patt)

返回一个数组,没有找到返回null

3、replace()

str.replace(patt, newValue)

替代指定的内容

4、split()

str.split(‘patt’)

以指定内容支解为数组

部份问题

问题一:正则校验电子邮箱

var checkEmail = function(email) {
    var patt = /^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/i
    return patt.test(email);
}
//另一种写法
/^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/;

问题二: 为string增加去除前后空缺字符的函数trim()

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g)
}

问题三:为数字增加’,’支解符,比方123456789输出123,456,789

function commafy(num) {
    return num && num.toString()
        .replace(/(\d)(?=(\d{3})+\.)/g, x => x + ',');
}

问题简析:首先是&&,短路运算符,也就是相当于if…else,当num存在时,会返回背面的值。
接下来是正则部份,注重?=背面的并不婚配,也就是比方12345678.9,现实婚配的值是2和5,在2和5背面加上’,’,就完成了预期。

    原文作者:Alarak
    原文地址: https://segmentfault.com/a/1190000009766124
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞