美文网首页
正则位置匹配

正则位置匹配

作者: 年轻小子 | 来源:发表于2017-09-22 14:07 被阅读0次

正则表达式要么匹配字符,要么匹配位置。

一、字符串的位置

就是整个字符串前后和单个字符之间的位置,例如下图:

二、正则表达式如何匹配位置

1、es5中匹配位置的正则:

^, $, \b, \B, (?=p), (?!p)

^ (脱字节),匹配字符串开始的位置。
$(美元符号),匹配字符串结尾的位置。
现在我么给"hello"前面和后面添加一个$符号,例子如下:

var result = "hello".replace(/^|$/g, "$");
console.log(result)
// => $hello$
2、\b和\B

\b是单词边界,是\w和\W之间、\w和^之间、\w和$之间的位置。

比如一个文件名是"[JS] learn_01.md"中的\b,如下:

var str = "[JS] learn_01.md";
console.log(str.replace(/\b/g, "$"))
// => [$JS$] $learn_01$.$md$

我面可以分析一下上面的结果,\w正则表达式是[0-9a-zA-Z_]来表示,\W正好和\w相反是[^0-9a-zA-Z_],所以[ ,],.这三个字符与\w之间会添加#,字符串结尾是\w和$之间,所以也会添加上#。
我们把上面的例子中的\b替换成\B, 代码如下:

var str = "[JS] learn_01.md";
console.log(str.replace(/\B/g, "$"))
VM92:2 $[J$S]$ l$e$a$r$n$_$0$1.m$d
3、 (?=p)和(?!p)

(?=p)中的p是一个子模式,即p前面的位置,比如(?=l),是l前面的位置。 例子如下:

var str = "hello";
console.log(str.replace(/(?=l)/g, "$"));
// => he$l$lo

(?!p)就是和(?=p)相反的意思, 例子如下:

var str = "hello";
console.log(str.replace(/(?!l)/g, "$"));
// => he$l$lo
4、案例分析

面试中遇到的一个题目,把"12345678",变成"12,345,678"。
(1)先让他有一个逗号,例子如下:

var str  = "12345678"
var result = str.replace(/(?=\d{3}$)/g, ',')
console.log(result); 
// => "12345,678"

(2) 弄出所有的逗号, 例子如下:

var str = "12345678"
var result = str.replace(/(?=(\d{3})+$)/g, ',')
console.log(result)
// => "12,345,678"

(3)多验证几下会出现问题

var str = "123456789"
var result = str.replace(/(?=(\d{3})+$)/g, ',')
console.log(result)
// => ",123,456,789"

我们并不需要最前面的那个逗号,我们需要不让匹配到最前面的位置,那就用(?!^)就可以解决,例子如下:

var str = "123456789"
var result = str.replace(/(?!^)(?=(\d{3})+$)/g, ',')
console.log(result)
// => "123,456,789"

相关文章

  • 正则位置匹配

    正则表达式要么匹配字符,要么匹配位置。 一、字符串的位置 二、正则表达式如何匹配位置 1、es5中匹配位置的正则:...

  • 正则表达式位置匹配攻略

    来源:正则表达式位置匹配攻略作者:老姚(转载已获得作者授权) 正则表达式是匹配模式,要么匹配字符,要么匹配位置。 ...

  • 《javaScript正则表达式迷你书》(一)

    正则表达式字符匹配攻略 正则表达式是匹配模式,要么匹配字符,要么匹配位置。 两种模糊匹配 如果正则只有精确匹配是没...

  • JavaScript 与正则表达式 -- 位置匹配

    正则匹配中,除了文本的匹配外,还有位置匹配。因为位置匹配不会匹配任何实际的文本,只是匹配文本中的位置,所以也称为锚...

  • 第二章 正则表达式位置匹配攻略

    第二章 正则表达式位置匹配攻略 正则表达式是匹配模式,要么匹配字符,要么匹配位置。请记住这句话。 然而大部分人学习...

  • 正则表达式编程

    本文摘抄自javascript正则表达式迷你书 正则表达式是匹配模式,要么匹配字符,要么匹配位置 1. 正则表达...

  • 正则表达式介绍

    正则表达式是匹配模式,匹配字符或者匹配位置。 一、字符匹配 1.两种模糊匹配 1.1 横向模糊匹配 一个正则可匹配...

  • 2019.8.15分享:正则表达式字符匹配攻略

    一、正则表达式 正则表达式是匹配模式,要么匹配字符,要么匹配位置。 这次分享主要将提下正则表达式字符匹配 • 两种...

  • 第一章 正则表达式字符匹配攻略

    第一章 正则表达式字符匹配攻略 正则表达式是匹配模式,要么匹配字符,要么匹配位置。请记住这句话。 然而关于正则如何...

  • 正则表达式字符匹配

    我们应该知道,正则表达式是匹配模式,要么匹配字符,要么匹配位置。 一、两种模糊匹配 如果正则只有精确匹配是没多大意...

网友评论

      本文标题:正则位置匹配

      本文链接:https://www.haomeiwen.com/subject/woqtextx.html