8
A
回答
0
如何找到-mr的位置,然後從那裏得到子字符串+3?
這不是正則表達式,但似乎工作給你的描述?
4
var result = "something30-mr200".split("mr")[1];
或
var result = "something30-mr200".match(/mr(.*)/)[1];
4
爲什麼不乾脆:
-mr(\d+)
然後獲取捕獲組的內容是什麼?
2
什麼:
function getNumber(input) { // rename with a meaningful name
var match = input.match(/^.*-mr(\d+)$/);
if (match) { // check if the input string matched the pattern
return match[1]; // get the capturing group
}
}
getNumber("something30-mr200"); // "200"
18
您可以使用像一個巴特一個正則表達式送給你,但我建議使用匹配,而不是取代,因爲萬一找不到匹配,其結果是整個字符串當使用替換時,而使用匹配時爲空,這看起來更合乎邏輯。 (儘管如此)。
像這樣的事情會做的伎倆:
functiong getNumber(string) {
var matches = string.match(/-mr([0-9]+)/);
return matches[1];
}
getNumber("something30-mr200");
1
這可能會爲你工作:
// Perform the reg exp test
new RegExp(".*-mr(\d+)").test("something30-mr200");
// result will equal the value of the first subexpression
var result = RegExp.$1;
+0
沒有必要包含第一個'。*',並且連字符不需要轉義。這也適用:''-mr(。*)「'。但'。*'是危險的:如果在''-mr''之後有更多的文本''''''''將會「吃」它。當然,OP沒有真正清楚''-mr''後面會出現什麼文字。 – 2009-10-14 20:56:44
+0
這是一個好點。我假設OP會在「-mr」之後想要所有的東西。我修改了代碼以在連字符前移除轉義並將子表達式限制爲數字。我比任何事情都擺脫了習慣。 :) – 2009-10-14 21:00:11
相關問題
- 1. 正則表達式的多重比賽?
- 2. 正則表達式 - 比賽@functin [args1 | args2]
- 3. 正則表達式 - 如何在比賽中找到比賽?
- 4. 正則表達式 - 賽達在接下來各組比賽
- 5. 兩位數的正則表達式Patterm比賽中的JavaScript
- 6. 正則表達式與第二場比賽的JavaScript
- 7. Javascript正則表達式比賽即將推出null
- 8. 比賽,但不能退貨的正則表達式的兩場比賽之間
- 9. 正則表達式/ Python的:N - 比賽的出現先於其他比賽
- 10. 正則表達式 - 想要兩場比賽只獲得一場比賽
- 11. JavaScript的正則表達式替換子
- 12. C++的正則表達式發現只有1分的比賽
- 13. 正則表達式的幫助 - 提取的第二場比賽
- 14. 正則表達式:比賽結束後的第一個字母
- 15. 比賽兩個文件的正則表達式
- 16. 正則表達式/ grep的比賽:「不是這個」和「那個」
- 17. 每個正則表達式的最後一場比賽
- 18. 只有最後一場比賽的正則表達式
- 19. 正則表達式依賴於以前的比賽
- 20. Perl的正則表達式零次或一次比賽
- 21. Python的正則表達式,排除引號比賽
- 22. Perl的 - 正則表達式 - 比賽情況
- 23. 正則表達式的問題 - 缺少比賽
- 24. Ruby的正則表達式匹配從比賽
- 25. 正則表達式匹配後,廣泛的首場比賽
- 26. 這是什麼比賽:bash的正則表達式
- 27. 正則表達式 - 比賽中的HTML源代碼的JavaScript變量
- 28. 使用JavaScript的正則表達式查找第一個和最長的比賽
- 29. 正則表達式可選的非正則表達式的小組賽
- 30. 正則表達式比較
你忘了關字符串'「mr' – 2009-10-14 20:33:22
謝謝,現在固定 – Kamarey 2009-10-14 20:35:08