前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript之我在正则表达式里踩的坑

JavaScript之我在正则表达式里踩的坑

作者头像
宸寰客
发布2020-07-13 15:21:31
4290
发布2020-07-13 15:21:31
举报
文章被收录于专栏:yuancao博客yuancao博客

在学习正则表达式的时候,突然翻车,代码如下:

代码语言:javascript
复制
var str = "Visit Runoob!"; 
var str1= "/noo/i";
document.write(str.search(str1));

以为就是走个流程,然而懵了:输出结果是-1. 半天也没找出错在哪里。 然后误打误撞下整出了下面的代码:

代码语言:javascript
复制
var str = "Visit Runoob!"; 
var str1= /noo/i;
document.write(str.search(str1));

咦,我又懵了,怎么居然就对了呢

在这里插入图片描述
在这里插入图片描述

搞了很久,才找到原因:str1是个对象,不是字符串,所以不能用引号引起来。

不对,那为什么菜鸟教程上的代码能用引号,如下:

代码语言:javascript
复制
<script>
var str = "Visit Runoob!"; 
var n = str.search("Runoob");
document.write(n);
</script>
在这里插入图片描述
在这里插入图片描述

不是说search() 、replace() 可以使用字符串吗?怎么有时就不行了呢

在这里插入图片描述
在这里插入图片描述

仔细对比了代码,发现第一个之所以不行,是因为声明变量并赋值的时候没有出现search,而后面那个是在出现了search的情况下赋值的。可能就是这个原因引起的吧

代码语言:javascript
复制
var str = "Visit Runoob!";               var str = "Visit Runoob!"; 
var str1= "/noo/i";                      var n = str.search("Runoob");
document.write(str.search(str1));        document.write(n);

作为一个小白,也不知道这么理解对不对,如有不对之处,还请大佬们指正。

附: 定义: 正则表达式是由一个字符序列形成的搜索模式。在文本中搜索数据时,可以用搜索模式来描述要查询的内容。

正则表达式可以是一个简单的字符,或一个更复杂的模式。可用于所有文本搜索和文本替换的操作。

语法 /正则表达式主体/修饰符(可选) 其中修饰符

代码语言:javascript
复制
i	执行对大小写不敏感的匹配。
g	执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m	执行多行匹配。

表达式

代码语言:javascript
复制
[abc]	查找方括号之间的任何字符。
[0-9]	查找任何从 0 至 9 的数字。
(x|y)	查找任何以 | 分隔的选项。

元字符

代码语言:javascript
复制
\d	查找数字。
\s	查找空白字符。
\b	匹配单词边界。
\uxxxx	查找以十六进制数 xxxx 规定的 Unicode 字符。

量词

代码语言:javascript
复制
n+	匹配任何包含至少一个 n 的字符串。
n*	匹配任何包含零个或多个 n 的字符串。
n?	匹配任何包含零个或一个 n 的字符串。

test()

test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

exec() exec() 方法用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档