【发布时间】:2015-01-26 22:25:06
【问题描述】:
在 Javascript 中,我正在读取 .txt 文件以解析并放入 HTML 表中。这工作得很好。在该信息中,有地址行,它们是第一行和第二行的组合(第二行是公寓编号、空间编号等)。它将这些内容很好地读入一行。
我正在尝试做的是分解第一和第二地址行,以便可以将其干净地输入数据库。为了分解它们,我编写了一个正则表达式来捕获尽可能多的选项。他们中的大多数都工作得很好。其中之一是拒绝正常工作,即使所有带有小示例的测试都表明它应该工作。
这是我正在尝试使用的正则表达式部分: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”实例(仍然不区分大小写)上的线路都中断了。我在上面提供的链接包含示例正则表达式,它们生成我从实时运行中获得的内容。
这种正则表达式情况是在带有 Razor (c#) 视图页面的 MVC 4 中的 javascript 代码中。同样,我没有在此处列出的其余正则表达式正在寻找完全不同的措辞工作正常。这只是一件。
任何有关如何正确调试此或任何解决方案的建议将不胜感激。谢谢。
【问题讨论】:
-
您的正则表达式搜索
Ste[space]或Ste[any character][space]。当您的目标是文字.时,您应该始终避开.,例如\.。您可以将您的正则表达式缩短为([\,\s]*)(Ste\.? ),而无需使用这些正则表达式查看代码。 -
很好理解我的那个错字。我已将其更改为该期间的适当逃生。不幸的是,这仍然在两种情况下造成问题。如果我按照你的方式使用它,无论出于何种原因,它都会拆分像“Allister”这样的单词,因为前面的空格和逗号是完全可选的。如果我将其更改为
([\,\s]+)(Ste\.? )以强制其中至少一个在前面,它找不到任何匹配项,即使它应该根据演示工作。 -
可能不会改变任何东西,但您不需要转义逗号。
-
变化不大,但感谢您的提醒 :) 这将有助于减少一点斜线混乱。
标签: javascript c# regex asp.net-mvc-4