2012-07-03 50 views
0

我很抱歉如果这是一个重复的,但我已经搜索了3个小时已经找不到任何不处理只有一个模式。正则表达式来匹配字符串的尺寸

我在URL中使用尺寸参数(即... media.php?sid = 200x100 & mid = ...其中200是宽度,100是高度)。还有其他参数可能/可能不包含其他数字(即UUID),但对此任务并不重要,但不应影响模式匹配。

我需要做的只是匹配'sid = ### x ###'部分才能取代它。 ###应该支持从1到99999之间的可变长度数字。

我已经尝试了很多模式到目前为止,并怀疑有人可能会知道这从他们的头顶,所以我不是要列出所有我的尝试,但在这里我使用的基本代码:

var oldSid = new RegExp('sid=[0..99999]x[0..99999]'); 
var newSid = 'sid=500x500'; 
var newUrl = oldUrl.replace(oldSid, newSid); 

任何帮助,您可以提供给填补空白,将不胜感激!

+2

看看使用'\ d +' – TheZ

回答

2

使用这一个:

var oldSid = new RegExp("sid=\\d{1,5}x\\d{1,5}"); 

...或者(因为它不是一个动态的正则表达式)这一个:

var newUrl = oldUrl.replace(/sid=\d{1,5}x\d{1,5}/, newSid); 
+0

完美,谢谢!非动态是一个伟大的附加珍闻和我一起去的。 –

+0

@凯文,不客气 – freefaller

1

使用正则表达式sid=[0-9]{1,5}x[0-9]{1,5}找到这样的比赛......

测试它here

+0

谢谢@omega,也工作。另一个答案是短一点,非动态是我应该从一开始就使用的。感谢你的帮助。 –

+0

@KevinFarley - 为什么我没有使用'\\ d'的原因是它是'\ d'的非动态模式,我不想让你对转义字符感到困惑。其他答案稍后再提出来,没有什么新意,只是将我的答案重新格式化为'\\ d'(或'\ d')代码。祝你好运! –

+0

对不起@omega,我只是认为他有点过分,非动态是有帮助的,我认为其他用户有类似问题的东西可能会有所帮助。当他们提交得如此密切时,你们可能同时打字,而没有看到其他人的回应。 –