首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与在线工具和实际代码不同的javascript regex行为

与在线工具和实际代码不同的javascript regex行为
EN

Stack Overflow用户
提问于 2016-08-03 16:30:54
回答 1查看 50关注 0票数 0

我正在使用http://regexr.com/3duh0这个正则表达式

代码语言:javascript
运行
复制
(?:\S+\s)?\S*Environment Canada\S? 

在这条线上

紧急洪水监视在美国东部时间东部时间星期五凌晨2点生效。降雨警告一直持续到晚上8点40分。资料来源:加拿大环境部。

当我将它应用到我的代码中时,它的工作原理是不同的,而且我无法解释为什么。

我使用节点0.10.32 (我知道,但在版本上没有选择),

代码语言:javascript
运行
复制
var regexFindSource= new RegExp('(?:\S+\s)?\S*Environment Canada\S?');
var summary = 'Flash Flood Watch in effect until Friday, 2:00 AM EDT.  Rainfall Warning in effect until 8:40 PM MDT.  Source: Environment Canada'
source = summary.match(regexFindSource);
console.log(source);
//The results of this bit of code are
//What i want is 'Source: Environment Canada'
//What i get is 'Environment Canada'

我之所以将正则表达式建立在加拿大环境部的基础上,是因为我想在加拿大环境部插入一个变量,如下所示

代码语言:javascript
运行
复制
var source = wwArray.Source;   
var regexFindSource= new RegExp('(?:\S+\s)?\S*' + source + '\S?');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-03 16:38:23

在\S*之前加上‘\\’,在‘S*’之后加上':‘

代码语言:javascript
运行
复制
var regexFindSource= new RegExp('(?:\S+\s)?\\S*: Environment Canada\S?');
var summary = 'Flash Flood Watch in effect until Friday, 2:00 AM EDT.  Rainfall Warning in effect until 8:40 PM MDT.  Source: Environment Canada'
source = summary.match(regexFindSource);
console.log(source);

编辑:

代码语言:javascript
运行
复制
var source = wwArray.Source;   
var regexFindSource= new RegExp('(?:\S+\s)?\\S*: '+ source +'\S?');
var summary = 'Flash Flood Watch in effect until Friday, 2:00 AM EDT.  Rainfall Warning in effect until 8:40 PM MDT.  Source: Environment Canada'
source = summary.match(regexFindSource);
console.log(source);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38749118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档