Javascript 正则表达式无法正常工作
Javascript Regular Expression not working right
在 Javascript 中,我正在读取 .txt 文件进行解析并放入 HTML table。这工作得很好。在该信息中,有地址行,它们是第一行和第二行的组合(第二行是公寓号码,space 号码等)。它将那些很好地读取到一行中。
我想要做的是分解第一和第二地址行,以便可以将其干净地输入数据库。为了分解它们,我编写了一个正则表达式来捕获尽可能多的选项。他们中的大多数工作得很好。其中之一拒绝正常工作,即使所有使用小示例的测试都表明它应该工作。
这是我尝试使用的正则表达式部分:Demo
使用正则表达式:
([\,\s]*)(Ste |Ste\. )
开启:
12 Watershore Circle
825 Stewart Street
820 N Lincoln Way
9235 Bella Vista Way
P.O. Box 4438
9936 Stone Oak Way
599 Hamstead Drive
3941 Park Drive Ste 20 #147
3609 Bradshaw RD,ste H #107
7909 Walerga Road, Ste. 112, PMB 108
我尝试过的选项:
([\,\s]*)(Ste |Ste\. )
([\,\s]+)(Ste |Ste\. )
(\,*[\W]Ste[\W]|\,*[\W]Ste\.[\W])
我网页上的实时结果似乎认为这些是什么意思:
(\,*[\w]Ste[\w]|\,*[\w]Ste\.[\w])
或
([\,\s]*)(Ste|Ste\.)
如您所见,我只是试图将 "Ste"(不区分大小写)与该行的其余部分分开。实时测试中发生的是 "Ste" 的任何实例上的行都断开(仍然不区分大小写)。我上面给出的 link 有示例正则表达式,这些正则表达式生成我从我的生活中得到的东西 运行.
这种正则表达式情况出现在 MVC 4 with Razor (c#) 视图页面的 javascript 代码中。同样,我没有在此处列出的正则表达式的其余部分正在寻找完全不同的措辞,但工作正常。就这一篇
将不胜感激有关如何正确调试此问题或任何解决方案的任何建议。谢谢。
显然,Crazysheep,您的评论非常重要。这让我想到了逃跑。
我在问题中忽略 post 的是,在 javascript 中,我没有直接将正则表达式写成正则表达式。由于行的长度,我把它写在一个字符串中,所以我可以将它分成多行,然后通过
将这个字符串转换为正则表达式
var re = new RegExp(reString,"gi");
由于这个小细节,所有的斜杠转义都像字符串转义一样工作。这意味着无论何时我有 \.
,对于 String,它都是在执行文字 .
而不是正则表达式转义。这适用于所有转义。
我注意到它的原因是因为对于以正则表达式格式看起来像这样的片段:(\. \d+)
,它在某事的每个瞬间都在中断,一个 space,和一个 D.Ex : 3 Drive
或 a Dr.
为了解决这个问题,在字符串中,对于正则表达式中的 \.
,我放了 \.
,以便转义 \
,这样它就可以正常工作正则表达式。
所以,谢谢 Crazysheep,你提供的帮助超出了你的认知! XD
在 Javascript 中,我正在读取 .txt 文件进行解析并放入 HTML table。这工作得很好。在该信息中,有地址行,它们是第一行和第二行的组合(第二行是公寓号码,space 号码等)。它将那些很好地读取到一行中。
我想要做的是分解第一和第二地址行,以便可以将其干净地输入数据库。为了分解它们,我编写了一个正则表达式来捕获尽可能多的选项。他们中的大多数工作得很好。其中之一拒绝正常工作,即使所有使用小示例的测试都表明它应该工作。
这是我尝试使用的正则表达式部分:Demo
使用正则表达式:
([\,\s]*)(Ste |Ste\. )
开启:
12 Watershore Circle
825 Stewart Street
820 N Lincoln Way
9235 Bella Vista Way
P.O. Box 4438
9936 Stone Oak Way
599 Hamstead Drive
3941 Park Drive Ste 20 #147
3609 Bradshaw RD,ste H #107
7909 Walerga Road, Ste. 112, PMB 108
我尝试过的选项:
([\,\s]*)(Ste |Ste\. )
([\,\s]+)(Ste |Ste\. )
(\,*[\W]Ste[\W]|\,*[\W]Ste\.[\W])
我网页上的实时结果似乎认为这些是什么意思:
(\,*[\w]Ste[\w]|\,*[\w]Ste\.[\w])
或
([\,\s]*)(Ste|Ste\.)
如您所见,我只是试图将 "Ste"(不区分大小写)与该行的其余部分分开。实时测试中发生的是 "Ste" 的任何实例上的行都断开(仍然不区分大小写)。我上面给出的 link 有示例正则表达式,这些正则表达式生成我从我的生活中得到的东西 运行.
这种正则表达式情况出现在 MVC 4 with Razor (c#) 视图页面的 javascript 代码中。同样,我没有在此处列出的正则表达式的其余部分正在寻找完全不同的措辞,但工作正常。就这一篇
将不胜感激有关如何正确调试此问题或任何解决方案的任何建议。谢谢。
显然,Crazysheep,您的评论非常重要。这让我想到了逃跑。
我在问题中忽略 post 的是,在 javascript 中,我没有直接将正则表达式写成正则表达式。由于行的长度,我把它写在一个字符串中,所以我可以将它分成多行,然后通过
将这个字符串转换为正则表达式
var re = new RegExp(reString,"gi");
由于这个小细节,所有的斜杠转义都像字符串转义一样工作。这意味着无论何时我有 \.
,对于 String,它都是在执行文字 .
而不是正则表达式转义。这适用于所有转义。
我注意到它的原因是因为对于以正则表达式格式看起来像这样的片段:(\. \d+)
,它在某事的每个瞬间都在中断,一个 space,和一个 D.Ex : 3 Drive
或 a Dr.
为了解决这个问题,在字符串中,对于正则表达式中的 \.
,我放了 \.
,以便转义 \
,这样它就可以正常工作正则表达式。
所以,谢谢 Crazysheep,你提供的帮助超出了你的认知! XD