繁体   English   中英

Javascript正则表达式-仅匹配一组4个数字

[英]Javascript Regex - match on only one set of 4 numbers

我是regex的新手,遇到了表达式(javascript)匹配我所需要的麻烦。

对于此示例:

21 Apr 1789 -  4 Mar 1797  John Adams                        (b. 1735 - d. 1826)  Fed 
 4 Mar 1797 -  4 Mar 1801  Thomas Jefferson                  (b. 1743 - d. 1826)  D-R 
 4 Mar 1801 -  4 Mar 1805  Aaron Burr                        (b. 1756 - d. 1836)  D-R 
 4 Mar 1805 - 20 Apr 1812  George Clinton                    (b. 1739 - d. 1812)  D-R 
 4 Mar 1813 - 23 Nov 1814  Elbridge Gerry                    (b. 1744 - d. 1814)  D-R 
 4 Mar 1817 -  4 Mar 1825  Daniel D. Tompkins                (b. 1744 - d. 1825)  D-R 
 4 Mar 1825 - 28 Dec 1832  John Caldwell Calhoun             (b. 1782 - d. 1850)  Dem 
 4 Mar 1833 -  4 Mar 1837  Martin van Buren                  (b. 1782 - d. 1862)  Dem 
 4 Mar 1837 -  4 Mar 1841  Richard Mentor Johnson            (b. 1780 - d. 1850)  Dem 
 4 Mar 1841 -  4 Apr 1841  John Tyler                        (b. 1790 - d. 1862)  Whg  
 4 Mar 1845 -  4 Mar 1849  George Mifflin Dallas             (b. 1792 - d. 1864)  Dem 

我需要的每一行只是“ b。”之后的4位数字年份。 因此,如果我只返回我的比赛,它将是:

1735
1743
1756
1739
1744
1744
1782
1782
1780
1790
1792

无论我是如何尝试构建表达式,无论是自己创建还是使用任何在线Web应用程序,它始终希望在所有 4位数字年份或直到我(包括我)的所有4位数字年份匹配需要。 当然,部分原因是我缺乏经验,因此我们将不胜感激。

使用正则表达式/b\\. (\\d{4})/ /b\\. (\\d{4})/应该与列表中的所有出生日期匹配。

您可以使用以下正则表达式: b\\.\\s(\\d{4})并访问捕获组1以获取所需的值。

在这里尝试: https : //regex101.com/r/zxbrs0/1

执行此操作的最简单方法(在Javascript中,因为您在此问题上标记了Javascript)只是执行两个正则表达式。 例如,您可以这样做。

var str = '4 Mar 1797  John Adams                        (b. 1735 - d. 1826)';
var regex = /\(b. [0-9]+/;
var regex2 = /[0-9]+/;
var birthDate = regex2.exec(regex.exec(str));
return birthDate;

如果您有了一般的想法,那么就可以根据自己的情况进行调整。 只需使用正则表达式来查找(b。1735(在这种情况下),然后提取1735。这仅是必要的,因为不幸的是,Javascript中的正则表达式不允许其他正则表达式引擎具有相同的外观特性。您可以使用(?<= \\(b。)只看b的后面。

我已经用Javascript测试了此脚本,因此它应该可以工作。

或者,您也可以使用捕获括号。 尝试使用它代替上面的正则表达式和var birthDate:

var regex = /\(b. ([0-9]+)/;
var birthDate = regex.exec(str)[1];

只需记住exec()应该返回一个数组,所以您需要指定您想要第二个元素([1])。

这也已经过测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM