2015-01-26 77 views
-1

在Javascript中,我正在读取.txt文件以解析并放入HTML表格。这工作得很好。在这些信息中,有地址线,它们是第一行和第二行(第二行是公寓号码,空格号码等)的组合。它将这些细节读入一行。

我想要做的是分手什么是第一和第二个地址行,以便它可以干净地馈送到数据库中。为了打破它们,我写了一个正则表达式来捕捉尽可能多的选项。他们中的大多数工作得很好。其中一个拒绝正常工作,即使所有的测试用小例子说它应该工作。

下面是我想与之合作的正则表达式的部分:使用Demo
Javascript Regular Expression not working right

正则表达式:

([\,\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]) 

正如你所看到的,我只是想分开“科技教育”(不区分大小写)从该行的其余部分。现场测试中发生的情况是,任何“Ste”(仍不区分大小写)的实例都会触发这些线路。上面给出的链接具有示例正则表达式,可以生成我从现场运行中获得的内容。

这个正则表达式的情况是在带有Razor(c#)视图页的MVC 4中的JavaScript代码中。再一次,我没有列出的正则表达式的其余部分正在寻找完全不同的措辞,可以正常工作。这只是这一块。

任何有关如何正确调试这个或任何解决方案的建议将不胜感激。谢谢。

+0

你的正则表达式搜索'Ste [space]'或'Ste [任何字符] [空格]'。当你瞄准文字'.'时,你应该总是躲避''。',就像'\ .'。您可以将正则表达式缩短为'([\,\ s] *)(Ste \。?)',而无需使用这些正则表达式来查看代码。 – 2015-01-26 22:58:24

+0

我的错字很好。我已经改变了这段时间的适当逃跑。不幸的是,这仍然造成两个案件的问题。如果我使用它,无论出于何种原因,它会分割像“Allister”这样的词,因为前面的空格和逗号是完全可选的。如果我将它改为'([\,\ s] +)(Ste \。?)'强制其中至少有一个在前面,它找不到任何匹配,即使它应该按照演示。 – TerriWiseden 2015-01-26 23:26:57

+0

可能不会改变任何东西,但你不需要转义逗号。 – cbreezier 2015-01-26 23:55:11

回答

0

所以,显然,Crazysheep,你的评论是非常重要的。这让我想到了逃跑。

我忽略发布在我的问题是,在JavaScript中,我没有直接写正则表达式作为正则表达式。由于该行的长度,我将它写入了一个字符串,因此我可以将它分成多行,然后通过
var re = new RegExp(reString,"gi");

将该字符串转换为正则表达式由于这个小小的细节,所有的斜线转义工作像String转义。这意味着无论什么时候我有\.,对于String而言,它只是在执行字面值.而不是正则表达式转义。这适用于所有逃脱。

我之所以注意到它的原因是因为对于正则表达式格式的文件,看起来像这样:(\. \d+),它在某个东西,一个空间和一个D.例如:3 Drivea Dr.

要解决这个问题,在字符串,这将是\.在正则表达式,我已经把\\.,为了躲避\因此它可以作为它必须在正则表达式。

所以,谢谢你Crazysheep,你已经帮助了超过你所知道的! XD