查找字符串并使用下一个String提取

时间:2017-11-28 09:39:32

标签: javascript regex

我有一个包含地址的字符串。我想检查地址是否包含“' Flat'如果是,请提取旁边的固定数字。

  • 单位数可以是一位,两位,三位或四位数。
  • 单词' flat'可以出现在字符串的任何部分(即不仅仅是在开头) - 但只出现一次。

以下是一个示例字符串:

Flat 62, Selig Court, Beverley Gardens, London

或者

Selig Court, Flat 62, Beverley Gardens, London

我希望结果是:

Flat 62

我试图在JavaScript中执行此操作。

4 个答案:

答案 0 :(得分:0)

基于你所说的: -

> "Selig Court, Flat 62, Beverley Gardens, London".match(/(Flat \d{1,4})/)[0]
'Flat 62'
> "Flat 62, Selig Court, Beverley Gardens, London".match(/(Flat \d{1,4})/)[0]
'Flat 62'

答案 1 :(得分:0)

试试这个正则表达式

/Flat\s+(\d+)/gi

解释

  • Flat\s+允许Flat
  • 之后的一个或多个空格
  • (\d+)匹配数字

实施例

"Flat 62, Selig Court, Beverley Gardens, London".match(/Flat\s(\d+)/gi); //["Flat 62"]

答案 2 :(得分:0)

这是应该做的诀窍。 String就像demo一样,就像console.log一样,让我们​​专注于示例。

myRegexp是一个正则表达式,我将用它来尝试从字符串中捕获。请记住,你必须在//之间定义它。至于它的内容,我匹配平面或平面,然后是空格,然后1-4位数。这是基于您提供的信息。所以它不会让我们说Flat1或FLAT 33。

var myString = "Flat 62, Selig Court, Beverley Gardens, London";
var myRegexp = /((Flat|flat) \d{1,4})/g;
var match = myRegexp.exec(myString);
console.log(match[1]);

对于一场比赛,我只是说嘿正则表达式,exec在这个字符串上并保存捕获组。如果与给定的字符串捕获组匹配,则获取您的信息。

请参阅您提供的2个示例中的解决方案:

js fiddle

我只解释了核心或更确切地说是如何解决问题。如果你在实践中使用正则表达式,还有很多东西需要了解它们。谷歌是你的朋友。

答案 3 :(得分:0)

您可以看到this示例:

    var str = "Flat 62, Selig Court, Beverley Gardens, London";
    var patt1 = /\w+\s\d+/g; 
    var result = str.match(patt1);