栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么此javascript正则表达式不起作用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么此javascript正则表达式不起作用?

使用正则表达式文字[MDN]

var reg = /(s*([0-9.-]+)s*,s([0-9.-]+)s*)/g;

使用

RegExp
MDN时出现两个错误:

  • “定界符”
    /
    不应该是表达式的一部分
  • 如果将表达式定义为字符串,则必须转义反斜杠,因为它是字符串中的转义字符

此外,修饰符作为第二个参数传递给函数。

因此,如果您要使用

RegExp
(在这种情况下不必使用),则等效项为:

var reg = new RegExp("\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)", "g");

(我想现在您知道为什么正则表达式文字更方便了)


我总是发现

RegExp
在控制台中复制和粘贴表达式并查看其输出会有所帮助。以您的原始表达,我们得到:

/(s*([0-9.-]+)s*,s([0-9.-]+)s*)/g

这意味着表达式尝试匹配

/
s
并且
g
字面意义上的括号
()
仍被视为特殊字符。


更新:

.match()
返回一个数组:

["(25.774252, -80.190262)", "(18.466465, -66.118292)", ... ]

这似乎不是很有用。

您必须使用

.exec()
MDN提取数字:

["(25.774252, -80.190262)", "25.774252", "-80.190262"]

必须重复调用它,直到处理完整个字符串为止。

例:

var reg = /(s*([0-9.-]+)s*,s([0-9.-]+)s*)/g;var result, points = [];while((result = reg.exec(polygons)) !== null) {    points.push([+result[1], +result[2]]);}

这将创建一个数组数组,一元加号(

+
)将字符串转换为数字:

[    [25.774252, -80.190262],     [18.466465, -66.118292],     ...]

当然,如果您希望这些值是字符串而不是数字,则可以省略

+



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393956.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号