2011-09-28 86 views
2

就像标题所说,我在JavaScript中有一个(错误的)正则表达式,它应该检查包围斜杠的“2”字符(在这种情况下)。所以如果URL是http://localhost/page/2/那么正则表达式就会通过。用斜杠包围的数字的正则表达式

在我的情况下,我有类似http://localhost/?page=2和正则表达式仍然通过。

我不知道为什么。谁能告诉我它有什么问题?

/^(.*?)\b2\b(.*?$)/ 

(我要告诉你,我没有写这个代码,我不知道它是如何工作的,因为我真的不好用正则表达式)

+1

您的正则表达式应该看起来像'/ \ d + /' – bdares

+1

它正在寻找'\'围绕着'\ b's这是词边界。所以只要'2'字符被认为是一个“单词”就会匹配。 '(。*?)'只是抓住周围的文本(贪婪),大概是这样你可以重建URL。 – davin

+0

尝试丢失问号。^(。*)应该足够,如果你想匹配任何起始序列。 – Nanda

回答

4

你不检查斜线包围的数字。你看到的斜线只是你的正则表达式分隔符。你检查两边的文字边界是\b。如果你希望只允许2斜线包围试试这个

/^(.*?)\/2\/(.*?)$/ 

^意味着从字符串

$比赛,直到开始比赛。这是/2/也为=2

真字符串末尾

(.*?)这些部分匹配您的2前后的所有内容,这些部分是st在捕捉小组。

如果你不需要这些部分,那么理查德是正确的,正则表达式/\/2\//适合你。

+0

这也做到了。接受的答案,因为你用'\ b'解释了这个事情。谢谢 –

+0

+1的解释比我好 –

6

显得过于简单,但不应该“吨这项工作?:

/\/2\// 

http://jsfiddle.net/QHac8/1/

因为它的JavaScript你必须逃脱斜线,因为它们是一个正则表达式的字符串分隔符。

,或者如果你想匹配任何数量:

/\/\d+\// 
+1

我想象更有可能'/ \/\ d + \ //' –

+0

+1好的答案,谢谢:) –

+0

@ TomalakGeret'kal这是真的,我会更新答案。 –

相关问题