资讯专栏INFORMATION COLUMN

JavaScript与正则表达式

Jrain / 1330人阅读

摘要:作为的内置对象表示对正则表达式有着原生的支持。返回值是被找到的值。正则表达式替换字符替换与正则表达式匹配的子串。正则表达式返回数组最大长度按照匹配到的字符作为切割点。

更多内容欢迎来到博客 :https://imjianjian.github.io 正则表达式基础 元字符

正则表达式中有两种字符:

1.元字符.表达式中的特殊字符

字符 含义
t 水平制表符
v 垂直制表符
n 换行符
r 回车符
0 空字符
f 换页符
cX 与X对应的控制字符符(Ctrl+X)
。。。 。。。

2.原意文本字符.普通字符,代表原本的意思

字符类

正则表达式中的字符与待校验字符串中的字符一一对应。

可以用 [ ] 将一些字符归为一类

也可以使用^取反,例如1

范围类

如果在字符类中要将每一种情况都列入晓得太麻烦,对于数字和字母可以使用范围类简写,例如:

[0-9]

[a-z]

[a-zA-Z]

预定义类

正则表达式还提供了一些预定义类,来对复杂范围类进行概括

字符 等价 含义
. 2 除了回车和换行符外的所有字符
d [0-9] 数字字符
D 3 非数字字符
s [tnx0Bfr] 空白符
S 4 非空白符
w [a-zA-Z_0-9] 单词字符(数字,字母,下划线)
W 5 非单词字符
字符边界
字符 含义
^ 以xxx开始
$ 以xxx结束
b 单词边界
B 非单词边界
量词

量词变数所匹配的字符串重复次数

字符 含义
出现零次或一次(最多一次)
+ 出现一次或多次(至少一次)
* 出现零次或多次(任意次)
{n} 出现n次
{n,m} 出现n到m次
{n,} 至少出现n次
贪婪模式与非贪婪模式 贪婪模式
d{3,6} //尽可能多匹配,但最多为6次
贪婪模式
d{3,6}? //尽可能少匹配,但至少为3次
分组

使用“()”将匹配规则划分成几个组

//"yes"连续出现3次
(yes){3}

//或:|,可以匹配yes or no或yes and no
yes(or|and)no

//反向应用
"2017-11-1".replace(/(d{4})-(d{2})-(d{0,2})/,"$3/$2/$1")
输出:1/11/2017
三个“()”将正则表示时分为三组,每组可以用$n来表示,n即在表达式中出现的次序。该表达式中的三组分别匹配到"2017"、"11"、"1",该函数将匹配到的字符串用第二个参数替换。$3/$2/$1==>2017/11/1
前瞻

前瞻即将匹配到的字符串再向前观察是否也符合所定义的规则,例如校验数字前是否带有“¥”,我们可以使用这个正则表达式:

d{0,}(?=¥)
名称 规则 含义
正向前瞻 exp(?=assert)
反向前瞻 exp(?!assert)
正向后顾 exp(?<=assert) JavaScript不支持
反向后顾 exp(?<=!assert) JavaScript不支持
RegExp对象

简而言之,正则表达式就是对比校验字符串是否符合某种规则。

RegExp作为JavaScript的内置对象表示JavaScript对正则表达式有着原生的支持。

创建对象
1.使用构造函数
var reg = new RegExp("imjianjian","g");
2.字面量方式
var reg = /imjianjian/g

以上两种方式都能创建js正则表达式对象,都是校验字符串中是否含有 imjianjian 这个单词,b表示单词边界。且两种方式中都使用了修饰符,构造函数用第二个参数来传入,而字面量则直接写在表达式后。修饰符一共如下三种:

g。global全文搜索,不写则只匹配字符串中的第一个

i。ignore case,忽略大小写,不写则大小写敏感

m。mutiple lines,多行搜索,不写则只搜索第一行

对象属性

global:是否全文搜索,默认false

ignoreCase:是否大小写敏感,默认false

multiline:多行搜索,默认false

lastIndex:当前表达式匹配内容的最后一个字符的下一个位置

source:正则表达式的文本字符串

对象方法 test(string)

test() 方法检索字符串中的指定值。返回值是 true 或 false。

/am/.test("i am jianjian") //true
/am/.test("he is jianjian") //false
exec(string)

exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

如果需要找到所有某个字符的所有存在,在找到第一个匹配的字符后,将存储其位置。如果再次运行 exec(),则从存储的位置开始检索,并找到下一个匹配字符,并存储其位置。

var str = "this is jianjian"; 
var reg = new RegExp("is","g");
var result;

while ((result = reg.exec(str)) != null)  {
  console.log(result);
  console.log(reg.lastIndex);
 }
conpile(regexp,modifier)

compile() 既可以改变检索模式,也可以添加或删除第二个参数。即更改匹配规则。

reg=/man/g;
reg2=/(wo)?man/g;
reg.compile(reg2,"i");//将匹配规则改为reg2,且大小写不敏感
string对象中支持使用正则表达式的方法 search(reg)

检索与正则表达式相匹配的值。返回第一个与 regexp 相匹配的子串的起始位置。如果没有找到任何匹配的子串,则返回 -1。search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。

match(reg|str)

找到一个或多个正则表达式的匹配。返回存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。

replace(reg,replacement)

reg:正则表达式

replacement:替换字符

替换与正则表达式匹配的子串。返回一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

split(reg,howmany)

reg:正则表达式

howmany:返回数组最大长度

按照匹配到的字符作为切割点。返回切割后的数组。

  • abc ↩

  • rn ↩

  • 0-9 ↩

  • tnx0Bfr ↩

  • a-zA-Z_0-9 ↩

  • 文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/92639.html

    相关文章

    • JavaScript中的正则达式

      Javascript的正则表达式是前端中比较重要的部分,正则表达式主要用于字符串处理,表单验证等场合,实用高效,文章主要对JavaScript中的正则的学习与总结 正则表达式的定义 正则表达式:是一个描述字符模式的对象,JavaScrip中正则表达式用RegExp对象表示,可以使用RegExp构造函数来创建正则对象 正则表达式的创建 1.字面量创建 var reg = /[a-z]/; 2.构...

      _Zhao 评论0 收藏0
    • JavaScript正则达式的匹配模式

      摘要:选择分组和引用正则表达式的语法还包括指定选择项子表达式分组和引用前一子表达式的特殊字符。带圆括号的表达式的另一个用途是允许在同一正则表达式的后部引用前面的子表达式。 正则表达式(regular expression)是一个描述字符模式的对象。JavaScript的 RegExp类 表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进 行强大的模式匹配和文本检索与...

      wqj97 评论0 收藏0
    • JavaScript正则达式

      摘要:引用就是允许在同一个正则表达式的后部引用前面的子表达式。这个数字制定了带圆括号的子表达式在正则表达式中的位置。对正则表达式中前一个子表达式的引用,并不是指对子表达式模式的引用,而是指与那个模式匹配的文本的引用。 前言 本文主要是在读《JavaScript高级程序语言设计》一书有关正则表达式的章节的知识点记录,方便后续查阅。 什么是正则表达式 正则表达式是用来描述字符组合的某种规则。它可...

      sixleaves 评论0 收藏0
    • JavaScript 闯关记》之正则达式

      摘要:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。其中,表示匹配项在字符串中的位置,而表示应用正则表达式的字符串。下面列出了正则表达式所不支持的特性。关卡按要求完成下列常用的正则表达式。 由于本课程的核心是 JavaScript,所以本文着重讲解了「正则表达式」在 JavaScript 中的用法,并未深入「正则表达式」的具体细节。如果您尚不了解「正则表达式」,强...

      TalkingData 评论0 收藏0
    • JS中的正则达式

      摘要:构造函数可以有两个字符串参数,第一个参数包含正则表达式的主体部分。只读的布尔值,说明这个正则表达式是否带有修饰符。中正则的扩展构造函数在中,只能接受字符串作为参数,允许其直接接受正则表达式作为参数。 上文传送门:初探正则表达式 正则表达式是一个描述字符模式的对象,JavaScript 的 RegExp 类表示正则表达式,String 和 RegExp 都定义了方法,后者使用正则表达式进...

      Soarkey 评论0 收藏0
    • JavaScript 中的正则达式

      摘要:正则表达式的意义中的正则表达式使用表示,可以使用构造函数来创建对象,不过对象更多的是通过一种特殊的直接量语法来创建。用构造函数也可以定义一个与之等价的正则表达式,代码如下正则表达式的模式规则是由一个字符序列组成的。 正则表达式的模式匹配 正则表达式(regular expression)是一个描述字符模式的对象。javascript的RegExp对象表示正则表达式,String和Reg...

      _Dreams 评论0 收藏0

    发表评论

    0条评论

    Jrain

    |高级讲师

    TA的文章

    阅读更多
    最新活动
    阅读需要支付1元查看
    <