JavaScript正则表达式匹配将输入作为前两个索引返回
JavaScript Regular Expression Match Return the Input as the First 2 Indexies
我刚刚开始使用JavaScript中的正则表达式(以及一般情况),我遇到了一个奇怪的问题,我似乎找不到使用谷歌的解释。
在不涉及太多细节的情况下,我使用以下表达式:
/(^sw:'s?(-?'d{1,3}.'d{1,6})'sne:'s?(-?'d{1,3}.'d{1,6})$)/i
与用户输入匹配,如:
sw: -27.990344 ne: 150.234562
具有以下console.log输出:
["sw: -27.345455 ne: 180.234567", "sw: -27.345455 ne: 180.234567", "-27.345455", "180.234567"]
0 "sw: -27.345455 ne: 180.234567"
1 "sw: -27.345455 ne: 180.234567"
2 "-27.345455"
3 "180.234567"
index 0
input "sw: -27.345455 ne: 180.234567"
我的问题是:为什么索引0和1返回用户提供的输入,而我希望返回的实际数据是索引2和3?
我认为这与我的表情有关,但对它的了解还不够,无法确定它不仅仅是正常的行为。
感谢您的帮助。
索引0始终完全匹配,捕获组从索引1开始。
捕获组按其开口括号编号,第一开口括号为组1,第二开口括号为第2。。。
你的完整表达式周围有括号,所以这是第一个捕获组。===>这个外括号是不需要的,您可以删除它们,然后您的组将从索引1开始。
有关捕获组的更多信息,您可以访问http://www.regular-expressions.info,这是一个非常好的regex资源。
答案在于正则表达式处理匹配分组的方式。在大多数实现中,组0将包含整个输入文本,而组1..n将包含任何用户定义的组匹配。但是,在您的情况下,您已经将整个表达式包装在一个组中,因此组1和组0将返回整个输入字符串,前提是可以找到匹配项。
相关文章:
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 如果在过去两个小时内没有记录,返回0,javascript逻辑
- react-让一个元素返回两个相邻的<tr>标签
- 如何从ajax返回两个html内容
- 两个提交按钮,但第一个返回空
- 在同一页面中使用两个版本的jquery将返回'未定义不是函数'
- 如何使用 Backbone 读取通过同一 REST URL 返回的两个不同对象
- 如何在JavaScript中返回两个日期(当前日期和输入日期)之间的字符串差异
- 尝试连接Angular.js或JavaScript中的两个函数返回
- 在一个对象中返回两个不同的返回值
- 如何从两个参数函数返回随机整数
- 函数,返回javascript中两个字符串数组的差值
- 用Angularjs返回两个承诺,How To Chain So UI有$scope
- 比较两个日期并以正确的格式返回
- 通过单击JSP和javascript加载两个返回函数
- jquery json 返回添加两个数字的数据
- 返回两个日期时间单元格之间的差值
- 如何从.ajax调用返回两个JSON数组
- 给定两个整数的字符串表示形式,返回这些整数之和的字符串表示形式
- 如何从AJAX中获取两个返回变量