2016-04-25 86 views
-4
Train from London to Boston - match 
Train from Boston to London 
Train from Cardif to London 
Bus from London to Paris - match 

如果伦敦出现在任何其他城市与正则表达式之前,我该如何匹配?我可以用JavaScript中的循环进行字符串匹配,但我认为正则表达式更好。使用正则表达式匹配左侧的东西

+1

你尝试过什么?这是非常直接的,但你似乎没有做任何努力来解决这个问题。 –

+0

@EdCottrell我不知道布特正则表达式。 – Jennifer

+0

你为什么要切换到正则表达式?你为什么认为它更好? – qxg

回答

1

获取线路,其包括London to

var str = `Train from London to Boston - match 
 
Train from Boston to London 
 
Train from Cardif to London 
 
Bus from London to Paris - match`, 
 
    city = 'london'; 
 

 
console.log(
 
    str.match(new RegExp('^.*\\b' + city + '\\sto\\b.*$', 'gmi')) 
 
)

Regex explanation here

Regular expression visualization

+0

如果伦敦是JavaScript中的变量呢? – Jennifer

+0

@Jennifer:它是正则表达式 –

+0

是的,我知道但如果伦敦是一个变量呢?它应该是动态的,不应该在正则表达式中硬编码伦敦。 – Jennifer

0

试试这个

\bLondon(?=\s*to\b) 

Regex demo

说明:
\:转义特殊字符sample
(?=…):正向前查找sample
\s: “空白字符”:空格,制表,换行符,carr iage返回,垂直制表sample
*:零或更多次sample

的Javascript

var re = /\bLondon(?=\s*to\b)/g; 
var str = 'Train from London to Boston - match\nTrain from Boston to London\nTrain from Cardif to London\nBus from London to Paris - match'; 
var m; 

while ((m = re.exec(str)) !== null) { 
    if (m.index === re.lastIndex) { 
     re.lastIndex++; 
    } 
    // View your result using the m-variable. 
    // eg m[0] etc. 
} 
+0

'\ b'是为了?如何使用此与JavaScript? – Jennifer

+1

'\ b'是一个字的边界,您可以使用'\ sLondon(?= \ s * to \ s)'来获得相同的结果。 –

相关问题