首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

RegExp 构造器看 JS 字符串转义设计

2、表单输入项的字符串赋值给变量时也无需转义 假设页面中存在输入框 ,在输入框中输入字符 \w+\.ke\.qq\.com,则通过 JS 获取到的值可以直接传入 RegExp...3、JS 代码中的转义处理 另外一种可能用到 RegExp string 参数的场景是:基于 JS 逻辑,动态创建正则表达式。例如正则表达式 /\w{3}/ 中的数字 3,是通过某个变量来传递的。...修饰符来解决字符串转义问题,在字符串前加上 r 标记,表示这个字符串的内容不经过解析。...为了解决模板字符串的解析和转义问题,ES6 模板字面量中引入了反引号(`)和 tag function(知名「CSS in JS」 库 styled-components 中大量使用了这种语法)。...回过头来看,JS 正则表达式构造器的参数设计问题,其实不是 RegExp 引起的,而是 JavaScript String 的设计缺陷:单引号和双引号非但没有参考 PHP/Shell 之类的设计,反而给前端社区留下

12.8K80

正则详解

修饰符(匹配选项) 其实正则的匹配选项有很多可选,不同的宿主语言环境下可能各有不同,此处就JS修饰符作一个说明: 加g修饰符:表示全局匹配,模式将被应用到所有字符串,而不是在发现第一个匹配项时停止...加i修饰符:表示不区分大小写 加m修饰符:表示多行模式,会改变^和$的行为,上文已述 三、JS(ES5)中的正则 JS中的正则由引用类型RegExp表示,下面主要就RegExp类型的创建、两个主要方法和构造函数属性来展开...要注意的是,第一,exec()永远只返回一个匹配项(指匹配整个正则的),第二,如果设置了g修饰符,每次调用exec()会在字符串中继续查找新匹配项,不设置g修饰符,对一个字符串每次调用exec()永远只返回第一个匹配项...所以如果要匹配一个字符串中的所有需要匹配的地方,那么可以设置g修饰符,然后通过循环不断调用exec方法。...不同之处在于,g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始。

1.5K30

全面学习正则表达式,从原理到实战

正则表达式的语法一般如下(js),两条斜线中间是正则主体,这部分可以有很多字符组成;i部分是修饰符,i的意思表示忽略大小写 /^abc/i 正则定义了很多特殊意义的字符,有名词,量词,谓词等,下面逐一介绍...2) // 可有匹配22,不能匹配12 修饰符 默认正则是区分大小写,这可能并不是我们想要的,正则提供了修饰符的功能,修复的语法如下 /xxx/gi // 最后面的g和i就是两个修饰符 g正则遇到第一个匹配的字符就会结束...:ccc)$/ 可以看到工具能够更快的帮我们理清头绪 JavaScript中的正则 在js中创建正则有两种办法,字面量和new,和创建其他类型变量一样 var reg = /abc/g // 字面量...var reg = new RegExp('abc', 'g') // new方式,意思和上面一样 js中用到正则的地方有两个入口,正则的api和字符串的api,RegExp#test等于RegExp.prototype.test...RegExp#test RegExp#exec String#search String#match String#split String#replace RegExp#test 每个正则实例都有

44120

js正则表达式

js正则表达式 目录 正则表达式定义及作用 字符串方法使用正则表达式 修饰符及模式 RegExp对象 实际用例 正则在线工具 正则表达式定义及作用 定义 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式...语法 /正则表达式主体/修饰符(可选) 作用 文本搜索 文本替换 字符串方法使用正则表达式 search()方法 检索与正则表达式相匹配的子字符串,并返回子串的起始位置 代码实例 var...代码实例 var str = 'HvGege' var str1 = str.replace(/ge/ig, "gege") console.log(str1) 输出结果 Hvgegegege 代码解释 g修饰符..., 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) 修饰符可以叠加, 此处使用两个修饰符i,g 修饰符及模式 修饰符 i执行对大小写不敏感的匹配 g执行全局匹配 m执行多行匹配...匹配任何包含零个或一个n的字符串 RegExp对象 RegExp对象是一个预定义了属性和方法的正则表达式对象 test()方法 用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本

7.3K30

大厂面试与工作中常见的正则表达式题目

[新建正则表达式]: var regexp = /aabb/g; //g可省 var regexp = new Regexp("xyz","g"); //第二个参数可省 区别在于: 1.采用字面量的写法新建的正则表达式对象在代码编译时就会生成...ignoreCase //返回一个布尔值表示正则对象是否设置了i修饰符,是一个只读属性 global //表示正则对象是否设置了g修饰符,返回布尔值 multiline //表示是否设置了m修饰符,返回一个布尔值...如果正则表达式带有g修饰符,则每一次test方法都从上一次匹配结束的位置开始匹配。...可以看到,如果正则表达式不带g修饰符,那么replace方法会替换第一个匹配成功的结果,如果加上了g修饰符,那么会替换所有匹配成功的值。...[玩转正则之highlight高亮] 四、其他 正则表达式的收集: [常用的正则表达式收集] [ js常用正则表达式] 参考资料: [RegExp MDN] [玩转正则之highlight高亮] 这里我只是总结了正则表达式相关的方法和属性

1.8K11

小览 ES6-ES2019 中正则表达式的新发展

ES6 中的正则表达式特性 以下特性首次在 ES6 中出现: “粘性”修饰符 /y unicode 修饰符 /u 正则表达式对象上的新属性 flags 用构造函数 RegExp() 拷贝正则表达式 “粘性...”修饰符 /y 修饰符 /y 只将正则表达式的每个匹配锚定到前一个匹配的末尾 简单的说,这主要与正则表达式对象上的 lastIndex 属性有关 -- 其与 /g 或 /y 的搭配,会产生不同的效果。...在不设置修饰符,或只设置了 /g 修饰符的情况下,只要目标字符串(或上一次匹配的剩余部分)中存在匹配就可以。...('haha'); console.log(match.index); // 1 console.log(re1.lastIndex); // 7 (没有变化呢) //设置了 `/g` 修饰符 const...: /^ad{3}/gi ES6中,新增的用法是 newRegExp(regex:RegExp,flags=regex.flags): var re2 = new RegExp(re1, "yi") /

62510

javascript正则表达式与字符串

原文链接 说到js正则表达式,js的字符串就是一个绕不开的话题 字符串是正则表达的是一种实践 字符串String支持一些支持正则表达式的方法,昨天提到的replace就是其中之一 它们分别是: search...构造函数将它转换成正则表达式,search()方法不支持全局检索,因为他忽略正则表达式参数中的修饰符g 举一个?...match()是很常用的字符串正则表达式方法,它的唯一参数就是一个正则表达式,或通过RegExp()构造函数将其转换为正则表达式,返回的是有匹配结果组成的数组,如果这个参数设置了修饰符g,则该方法返回的数组包含字符串中的所有匹配结果...2 equals 3", groups: undefined] (带修饰符g) let c = "1 plus 2 equals 3".match(/\d+/g) console.log(c...').reverse().join('')); } 3、js 实现一个函数 获得url参数的值 function getQueryString(name) { var reg = new RegExp

99030

前端进阶必须知道的正则表达式知识

// 使用RegExp对象创建 var exp2 = new RegExp('\d', 'g'); 模式中使用的所有元字符都建议在之前加 \转义,正则表达式中的元字符包括: ( [ { \ ^ $ |...(ok)那么这里 $1指的就是ok 前瞻 前瞻 Lookahead 是RegExp匹配到规则的时候,向后检查是否符合断言,后顾JS目前不支持 (ES2018已经支持) 名称 正则 描述 正向前瞻 (?...只读 3.2 RegExp实例上的属性 是否全文搜索,默认 false ,对应修饰符g ,只读 3.3 常用方法 RegExp.prototype.test(str) 测试字符串参数中是否存在匹配正则表达式的字符串...,每次调用exec()会在字符串中继续查找新匹配项,不设置g修饰符,对一个字符串每次调用exec()永远只返回第一个匹配项。...所以如果要匹配一个字符串中的所有需要匹配的地方,那么可以设置g修饰符,然后通过循环不断调用exec方法。

67720

浅析JavaScript正则表达式

对象 2.RegExp对象定义(js风格):var reg = new RegExp(exp, attributes);   var pattern = new RegExp("ccy$");;//匹配以...7.修饰符 字符 含义 I 不区分大小写 g 全局匹配 m 多行匹配模式 8.用于匹配模式的String方法 1.search(reg) 参数reg为正则表达式,返回第一个与之匹配的子串的起始位置,如找不到则返回...,必须将 \ 替换成 \\ 第二个参数是可选的,只能传 g i m,或者它们的组合 var zipcode = new RegExp("\d{5}","g"); 1.RegExp属性 source...:是一个只读字符串,包含正则表达式的文本 global:是一个只读的布尔值,用以说明这个正则表达式是否带有修饰符g ignoreCase:是一个只读的布尔值,用以说明正则表达式是否带有修饰符i multiline...:是一个只读的布尔值,用以说明正则表达式是否带有修饰符m lastIndex:是一个可读/写的整数,如果匹配模式带有g修饰符,这个属性存储在整个字符串的下一次检索的开始位置,会被exec(),test

1.5K30

正则表达式理论篇

类似js中的或,又称分支条件。 / 正则表达式模式的开始或结尾。 \ 反斜杠字符,用来转义。...修饰符 i 执行不区分大小写的匹配。 g 执行一个全局匹配,简而言之,即找到所有的匹配,而不是在找到第一个之后就停止。.../^\uD83D/u.test('\uD83D\uDC2A') // false /^\uD83D/.test('\uD83D\uDC2A') // true y修饰符g修饰符都是全局匹配,不同之处在于...:lastIndex属性指定每次搜索的开始位置,g修饰符从这个位置开始向后搜索,直到发现匹配为止;但是y修饰符要求必须在lastIndex指定的位置发现匹配,即y修饰符确保匹配必须从剩余的第一个位置开始...、{n}、{n,}、{n,m} 限定符 任何元字符^、$、\ 定位点和序列 | 替换 关于引擎 JS 是 NFA 引擎。 NFA 引擎的特点: 以贪婪方式进行,尽可能匹配更多字符。

1.2K20
领券