首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我实现.match正则表达式时,为什么我的JavaScript输出很奇怪?

当你实现.match正则表达式时,JavaScript输出很奇怪可能有以下几个原因:

  1. 正则表达式的语法错误:首先要检查你的正则表达式是否有语法错误。正则表达式的语法非常严格,一个小的错误都可能导致匹配失败或者输出异常。可以使用在线的正则表达式测试工具,如https://regex101.com/,来验证你的正则表达式是否正确。
  2. 匹配模式不正确:正则表达式的匹配模式也可能导致输出异常。常见的匹配模式包括全局匹配(g)、忽略大小写匹配(i)、多行匹配(m)等。你需要根据实际需求选择正确的匹配模式。
  3. 输入字符串格式不符合预期:你需要检查输入的字符串是否符合你的预期。如果输入的字符串格式不正确,那么正则表达式的匹配结果也会出现异常。
  4. 使用了特殊字符:正则表达式中一些特殊字符具有特殊的含义,如果你想要匹配这些特殊字符本身,需要使用转义字符(\)进行转义。例如,如果你想要匹配句子中的句号(.),你需要使用正则表达式/\./来进行匹配。
  5. 使用了贪婪匹配:正则表达式默认使用贪婪匹配,即尽可能多地匹配字符。如果你想要使用非贪婪匹配,可以在匹配模式后面加上问号(?)。例如,/a+?/会匹配尽可能少的连续的字母a。

总结起来,当你实现.match正则表达式时,JavaScript输出很奇怪可能是因为正则表达式的语法错误、匹配模式不正确、输入字符串格式不符合预期、使用了特殊字符或者使用了贪婪匹配。你可以逐一排查这些可能的原因,找出问题所在并进行修正。

相关搜索:当我管道输出时,为什么我的分叉程序的输出不同?当我运行javascript函数时,为什么我的RAM会超载?当我在对象数组上使用map()时,我得到了奇怪的输出,我该如何修复它?当我输入矩阵时,为什么我的Javascript高斯消除程序不工作?当我在模板文字中使用.map时,为什么我的输出中有逗号?当我尝试在我的功能组件中使用来自props对象的match参数时为什么失败?当我使用不同的函数时,为什么我得到两个不同的输出?当我尝试在javascript中创建节点时,为什么我的<span>被删除了当我使用脚本实现它时,为什么我的html菜单上会出现不同的尺寸?当我在javascript上使用标签时,为什么我不能通过css设置标签的样式?为什么我的正则表达式在RegexPal中有效,但在我运行Javascript时却没有?当我使用Flask呈现一个模板时,为什么我的html代码没有输出变量的值?当我在下面的代码中的第1行输入"j<0“时,为什么我得不到输出?为什么当我将ByteBuffer转换成字符串时,我得到了很多不想要的输出?当我更新self变量时,出现了一个奇怪的结果(因为我是python新手)。为什么会发生这种情况?当我输入一个命令时,为什么我的机器人向命令输出发送垃圾邮件?当我尝试在我的ASP.Net Core2.2API中实现UseNetTopologySuite时,为什么会出现这个错误?(JavaScript,Redux)为什么我的嵌套数组在返回时会被删除,而当我不返回时却不会?Dart,为什么当我实现一个没有覆盖每个字段的类,而是从Mockito扩展Mock时,我的类没有错误?当我把一个随机数生成器/猜测程序放入一个函数时,我的javascript代码崩溃了。为什么它会崩溃?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

笨办法学 Python · 续 练习 33:解析器

首先,当我们加载一个.py文件,它只是一个“字符”流 - 实际上是字节,但 Python 使用Unicode,所以必须处理字符。这些字符在一行中,毫无结构,扫描器任务是增加第一层次意义。...你会注意到,这些是在练习 33 中让你为扫描器创建三个操作,这就是为什么。你需要他们来实现一个 RDP 解析器。 你可以使用这三个函数来编写语法解析函数,从扫描器中获取记号。...BNF 语法 尝试从头开始编写一个 RDP 解析器是没有某种形式语法规范,有点棘手。你还记得当我要求你将单个正则表达式转换成 FSM 吗?这很难吗?它需要更多代码,不只是正则表达式几个字符。...当你为这个练习编写 RDP 解析器,你将会做类似的事情,因此它有助于使用一种语言,它是“语法正则表达式”。...ABNF 运算符大部分与正则表达式相同,只是由于某种奇怪原因,它们在要重复东西之前放置重复符号。

58320

javascript正则表达式 教程_js正则表达式匹配字符串

作用二:定义一个子匹配模式,方便获取子匹配模式匹配到字符串 在将这个作用前,还是再来详细介绍一下之前例子中用到匹配方法 match() 具体用法。...query=javascript" str.match(pattern) //返回 ['query=javascript', 'javascript'] 在这个例子中,我们明确知道我们只是想获取...', 'java'] 补充:当match()传入一个非全局正则表达式,实际上返回数组里有两个属性:index和input,他们分别表示匹配到字符串起始位置和检索整个字符串。...match() 方法不同是,不管正则表达式是否使用修饰符g,exec()都只会将第一个匹配到字符串以及子表达式匹配到字符串放到数组里返回;而match()方法在没有使用修饰符g,跟exec()...,当我们进行第一次检索,匹配到了javascriptjava,返回了该字符串,这时lastIndex变为第一次匹配到字符串起始位置索引 4;我们进行第二次索引,是从索引 5 开始匹配,往后检索到字符串末尾

3.4K10
  • JavaScript正则表达式模式匹配教程,并且附带充足实战代码

    作用二:定义一个子匹配模式,方便获取子匹配模式匹配到字符串 在将这个作用前,还是再来详细介绍一下之前例子中用到匹配方法 match() 具体用法。...query=javascript" str.match(pattern) //返回 ['query=javascript', 'javascript'] 在这个例子中,我们明确知道我们只是想获取...', 'java'] 补充:当match()传入一个非全局正则表达式,实际上返回数组里有两个属性:index和input,他们分别表示匹配到字符串起始位置和检索整个字符串。...与 match() 方法不同是,不管正则表达式是否使用修饰符g,exec()都只会将第一个匹配到字符串以及子表达式匹配到字符串放到数组里返回;而match()方法在没有使用修饰符g,跟exec(...,当我们进行第一次检索,匹配到了javascriptjava,返回了该字符串,这时lastIndex变为第一次匹配到字符串起始位置索引 4;我们进行第二次索引,是从索引 5 开始匹配,往后检索到字符串末尾

    1.2K20

    记录一次JavaScript正则诡异经历

    背景 有一个Node服务,希望对访问进来请求进行标记,如果请求进来path是定义路由,那么将标记一个REQ,否则标记一个IVL,用于对于整个服务日志记录进行输出。...,不能直接通过path进行相等判断,需要对相应路由规则生成一个对应正则表达式,并且在服务启动生成,保存在内存中进行复用。...经过反复验证,node代码并没有存在问题,正则表达式也没有问题,那么在浏览器中尝试复现一下,也是得出同样问题。至此确定,一定是有一些正则相关坑是以前没有注意到。...于是反查了一下JavaScript文档,终于被我找到原因。...通过文档说明得知,当我正则表达式带有g标识进行全局匹配,匹配成功后,regex实例中会有一个lastIndex属性去记录本次命中正则最后一位下标+1,用于在下一次调用test时候,从lastIndex

    27620

    ES10新特性(一)

    但是除了 Object.fromEntries 之外,Chrome 大多数功能都已经实现了,为什么不早点开始探索呢?当所有浏览器都开始支持它,你将走在前面,这只是时间问题。...string.prototype.matchAll() 如果您运行谷歌搜索JavaScript string match all,第一个结果将是这样:如何编写正则表达式match all”?...最佳结果将建议 String.match正则表达式和 /g 一起使用或者带有 /g RegExp.exec 或者带有 /g RegExp.test 。...那么为什么要使用全新 matchAll 方法呢? 在我们更详细地回答这个问题之前,让我们先来看看 捕获组。如果不出意外,你可能会学到一些关于正则表达式新知识。...这在过去是一个巨大痛苦。想象一下,从某个数据库接收正则表达式,你不确定它末尾是否有 /g,你得先检查一下。

    1K30

    正则表达式

    正则表达式(简称为“regex”),允许用户使用他们能想到、几乎任何类型规则来搜索字符串 。例如,查找字符串中所有大写字母,或查找文档中电话号码。 正则表达式因其看似奇怪语法而臭名昭著。...这种奇怪语法是其灵活性副产品。正则表达式必须能够过滤掉可以想象任何字符串模式,这就是为什么它们具有复杂字符串模式格式。 我们使用 Python 内置 re 库来处理正则表达式。...上面的操作,如果用正则表达式实现,则为: import re pattern = 'phone' re.search(pattern,text) 输出 <_sre.SRE_Match object;...' 结果没变,但是它看起来很简单,可以容易地用于复杂和大型图案。...分组 继续以上面的电话号码为例,是由三个数字一组组成,如果要每三个数字作为一个单位来搜索,则需要在正则表达式中分组,分组方法就是使用 () 实现,例如: >>> phone = re.search(r

    57140

    藏在正则表达式陷阱

    通过排查代码,我们知道这个方法主要功能是校验 URL 是否合法。奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。 为了弄清楚复现问题,我们将其中关键代码摘抄出来,做了个简单单元测试。...正则表达式引擎 正则表达式是一个方便匹配符号,但要实现这么复杂,功能如此强大匹配语法,就必须要有一套算法来实现,而实现这套算法东西就叫做正则表达式引擎。...这是这个正则表达式存在第二个问题。 解决方案 明白了回溯是导致问题原因之后,其实就是减少这种回溯,你会发现如果在第三部分加上下划线和百分号之后,程序就正常了。...当你点击左下角「regex debugger」,它会告诉你一共经过多少步检查完毕,并且会将所有步骤都列出来,并标明发生回溯位置。 本文中这个正则表达式在进行了 11 万步尝试之后,自动停止了。...但是当我用我们修改过正则表达式进行测试,即下面这个正则表达式: ^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)

    59270

    【译】ES10功能完全指南 - 还学动吗?

    但是除了 Object.fromEntries大多数功能已经在 Chrome中实现,所以你为什么不尽早开始探索它呢?当所有浏览器开始支持它,你已经获得了领先优势,这只是时间问题。...那么为什么要用全新 matchAll方法呢?在我们更详细地回答这个问题之前,让我们来看看 capture group。如果不出意外,你可能会学到新有关正则表达式东西。...正则表达式捕获组 在正则表达式中捕获组只是在 ()括号中提取匹配。你可以从 /regex/.exec(string)和 string.match捕获组。 通常捕获组是在匹配规则中被创建。...现在我们有足够背景知识回答这个问题: 最好使用 .matchAll() 使用捕获组更加优雅。捕获组知识带有提取模式()正则表达式一部分。 它返回一个迭代器而不是数组,迭代器本身很有用。...它指定一个解释器(什么将执行您JavaScript文件?) ES10标准化了这一点。不会详细介绍这个,因为这在技术上并不是一个真正语言功能。

    1.4K20

    正则表达式和 CPU 100%有什么故事?

    奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中关键代码摘抄出来,做了个简单单元测试。...正则表达式引擎 正则表达式是一个方便匹配符号,但要实现这么复杂,功能如此强大匹配语法,就必须要有一套算法来实现,而实现这套算法东西就叫做正则表达式引擎。...当你点击左下角「regex debugger」,它会告诉你一共经过多少步检查完毕,并且会将所有步骤都列出来,并标明发生回溯位置。 本文中这个正则表达式在进行了 11 万步尝试之后,自动停止了。...这说明这个正则表达式确实存在问题,需要改进。 但是当我用我们修改过正则表达式进行测试,即下面这个正则表达式。...一个字符差别,性能就差距了好几万倍。 树义有话说 一个小小正则表达式竟然能够把 CPU 拖垮,也是神奇了。

    1.4K20

    巧用“搜索”解决自学编程遇到难题

    然后有一天你意识到你程序产生了一些奇怪结果,但只是在老版本 IE浏览器才出现:你程序认为 ’2014-10-08’下一天是’2014-10-01’,而不是 ’2014-10-09’。...比困境更加让人沮丧是不知道如何脱离困境。 parseInt解释 为什么老版本 IE parseInt会做如此奇怪事情呢?...例如,在搜索 parseInt问题结果,一个好查询可能是“ javascript parseInt returns 0”。当我运行这个搜索,第一条记录就返回了要找答案。...之前提到过给我第一个网站实现“自动补全”功能。...读了一些关于 autocomplete文章,确保那就是要找东西,并且发现了关键字 AJAX。了解到 AJAX就是实现基于用户输入文字展现搜索推荐技术。

    57120

    一道面试题引起思考

    题目如下: 实现一个get函数,使得下面的调用可以输出正确结果 const obj = { selector: { to: { toutiao: "FE Coder"} }, target: [1,...所以,我们首先得先识别到这种特殊类型,然后再对它进行额外处理。 这个时候,很快就可以想到使用正则表达式来做这个事情。为什么呢?...这个时候查了下正则表达式文档(文档点击这里),发现有一个match方法,可以返回匹配成功结果。...这种方法承认一开始确实没想到,确实是奇技淫巧。不过仔细思考了下,其实很多框架都用到了这个奇技淫巧。...实现一个功能时候,不要只考虑正常情况,要多考虑一些非正常情况,比如输入格式不对、用户不按套路来或者因为一些奇奇怪事情报错。并且能对可预见非正常情况做一个容错处理。

    36140

    JavaScript正则表达式入门知识详细介绍

    前言 正则表达式,在各种语言(JS、Java、Php等)里面都是常见,而且语法都有相似之处。作为新手,第一次接触正则,可能一脸茫然,这是什么东西,语法这么奇怪。...正则表达式用在什么地方 1、常用于表单校验(如登录用户名、密码等),校验数据有效性 2、替换文本,如数据里面含有大量换行符(enter),输出到页面是看不到,需要全局替换成 3、根据模式匹配从字符串中提取一个子字符串...正则表达式相关方法有哪些 正则表达式常用方法有test、exec、match和replace这四个方法。 ?...index:3 表示捕获开始位置索引 input 表示原有的字符串 当我们用exec进行捕获,如果正则没有加'g'标识符,则exec捕获每次都是同一个,当正则中有'g'标识符 捕获结果就不一样了...(reg)); // ["123", index: 3, input: "abc123def456ght789"] 上边两个方法console结果是完全相同,并无二致,但是当我们进行全局匹配,二者不同就会显现出来了

    73041

    Javascript 新功能-Part 1

    如果有一个字符串,其中有多个全局正则表达式捕获组,经常想要遍历所有匹配。...String.prototype.match() with /g — 如果我们通过 .match() 使用正则表达式,设置其标志为 /g ,你会得到一个完全匹配数组。...上述方法问题在于,只有在正则表达式上设置 /g 并且每次匹配正则表达式属性 .lastIndex 进行更改时,它们才起作用。这使得在多个位置使用相同正则表达式存在风险。...如果使用strict,则其值是 undefined 当我们在 javascript 中形成捆绑包,通常会在一些可能与此全局代码不同代码下进行包装。...这是因为不同 JS 引擎(在不同浏览器上)采用了不同路径来实现排序,而且某些 JavaScript 引擎对短数组使用稳定排序,而对长数组使用不稳定排序。

    85620

    这篇正则表达式竟写的如此详尽

    这篇正则表达式竟写的如此详尽 https://www.zoo.team/article/regexp 前言 为什么要学正则表达式? 作为一个菜鸟程序员,遇到复杂正则往往会求助搜索引擎。...高级概念 懒惰匹配和贪婪匹配 (Lazy and Greed) 当我们想要匹配文本中 HTML 我们会写下如下正则表达式。...至此正则表达式高级部分学完啦,接下来我们学习正则提供方法。 方法 在 JavaScript 中,RegExp 对象是一个预定义了属性和方法正则表达式对象。...配合 String 提供方法 match match 这个方法主要用来提取数据,它配合分组()一起使用,可以方便提取数据。...对正则表达式匹配字符串,@@match 方法用于获取匹配结果。

    74630

    藏在正则表达式陷阱

    通过排查代码,我们知道这个方法主要功能是校验 URL 是否合法。 奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中关键代码摘抄出来,做了个简单单元测试。...看着这个表达式发呆了许久,也没发现没有什么大问题。...其实这里导致 CPU 使用率高关键原因就是:Java 正则表达式使用引擎实现是 NFA 自动机,这种正则表达式引擎在进行字符匹配时会发生回溯(backtracking)。...正则表达式引擎 正则表达式是一个方便匹配符号,但要实现这么复杂,功能如此强大匹配语法,就必须要有一套算法来实现,而实现这套算法东西就叫做正则表达式引擎。...但是当我用我们修改过正则表达式进行测试,即下面这个正则表达式。 ^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)

    19720

    藏在正则表达式陷阱

    通过排查代码,我们知道这个方法主要功能是校验 URL 是否合法。 奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中关键代码摘抄出来,做了个简单单元测试。...; } } 当我们运行上面这个例子时候,通过资源监视器可以看到有一个名为 java 进程 CPU 利用率直接飙升到了 91.4% 。...看着这个表达式发呆了许久,也没发现没有什么大问题。...正则表达式引擎 正则表达式是一个方便匹配符号,但要实现这么复杂,功能如此强大匹配语法,就必须要有一套算法来实现,而实现这套算法东西就叫做正则表达式引擎。...但是当我用我们修改过正则表达式进行测试,即下面这个正则表达式。 ^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)

    2K211

    一个正则表达式引发血案,让线上CPU100%异常!

    奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中关键代码摘抄出来,做了个简单单元测试。...正则表达式引擎 正则表达式是一个方便匹配符号,但要实现这么复杂,功能如此强大匹配语法,就必须要有一套算法来实现,而实现这套算法东西就叫做正则表达式引擎。...img 当你点击左下角「regex debugger」,它会告诉你一共经过多少步检查完毕,并且会将所有步骤都列出来,并标明发生回溯位置。 ?...img 本文中这个正则表达式在进行了 11 万步尝试之后,自动停止了。这说明这个正则表达式确实存在问题,需要改进。 但是当我用我们修改过正则表达式进行测试,即下面这个正则表达式。...img 一个字符差别,性能就差距了好几万倍。 树义有话说 一个小小正则表达式竟然能够把 CPU 拖垮,也是神奇了。

    73810

    从今天起开启对正则表达式学习

    每次遇到与表单验证和校验相关问题都会很难避免的卡住,是时候攻克一下这个问题 从今天开始进入对javascript正则表达式学习 前期准备 为了本地调试方便我们先安装本地服务器 npm install...http-server -g 然后新建一个html文件 启动服务 http-server 必备知识点 创建正则表达式 javascript正则表达是的创建有两种方式 最常见 就这这种,首尾用两个斜线...javascript正则表达式是RegExp, RegExp是javascript内置构造函数,即存在protoytpe,可以翻看之前js原型系列文章查看,看看下RegExp原型对象 console.log...exec() 提到exec(),就不得不提match(),他们相似 match是字符串方法,写法为:str.match(reg) exec是正则表达式方法,写法为:reg.exec(str) 异同 match...:",rs_exec1); console.log("exec2:",rs_exec2); 输出  全局匹配分组match和exec返回结果不同。

    51820

    【JS】246-如何在JavaScript面试中过五关斩六将?

    JavaScript 面试不容易。觉得难,你也觉得不容易,大家意见不谋而合。在 JavaScript 面试中被问问题概率通常很高。那么该如何破解 JS 面试?突破口在哪儿?...console.log(2.0 == “2” == new Boolean(true) == “1”) 90%的人认为输出 false。但答案是 true。为什么?往下看。...输出结果是: 12.56636 如此,老师会欣慰。你会发现 call 函数接收了两个参数: 上下文 函数参数 上下文是在函数体内替换 this 对象。接着,参数会通过函数参数传入。...为什么会这样?出现这种情况是因为 JavaScript 不能继承父类方法。如何解决这个问题呢?...除了 exec 函数,还有 match, search 和 replace 函数,它们可通过正则表达式找到某个字符串。但这些函数应该应用于字符串本身。

    1.3K30
    领券