2015-12-16 74 views
1

我需要一個特定的正則表達式是這樣的:具體的正則表達式測試

(\d{1,3}\/\d{1,3}\/\d{1,3})\-(.*) 

例如:

1/2/3-abc 

它接受:

  • 1/2/3 - 捕獲指數1
  • abc - 捕獲指數2

我需要從捕獲索引1只是123沒有'/'字符。

我嘗試了積極/消極的前瞻,但它不會工作。

非常感謝

+0

不能匹配一個匹配操作中的非連續文本。在匹配你需要的之後使用'replaceAll'方法。更好 - 這裏沒有正則表達式。 –

+0

您需要在比賽中進行字符串替換。 –

回答

2

你可以實現你需要一些字符串操作的:

var s = "1/2/3-abc"; 
 
if (s.indexOf("-") > -1) { // Check if there is a hyphen in the string 
 
    document.write(s.substring(0, s.indexOf("-")).replace(/\//g, "")); 
 
} 
 

s.indexOf("-")將找到的第一個-字符的索引中輸入字符串,在我們從開始到-(與s.substring(0, s.indexOf("-")))得到子串後,我們可以刪除/符號與.replace(/\//g, "")

+0

問題是針對JavaScript的。 :p –

+1

今天我一直在回答Java的問題。我已經重寫了提供JS代碼的答案。 –

0

無法從單個匹配中提取字符。你需要捕捉整個組。之後,你可以替換你不想要的字符。

您可以使用匹配器或替換器來提取組。

function processMatcher(str) { 
 
    var match = str.match(/(\d{1,3}\/\d{1,3}\/\d{1,3})\-(.*)/); 
 
    return match[1].replace(/[\/]/g, ''); 
 
} 
 

 
function processReplacer(str) { 
 
    return str.replace(/(\d{1,3}\/\d{1,3}\/\d{1,3})\-(.*)/, function(match, p1, p2, offset, string) { 
 
    return p1.replace(/[\/]/g, ''); 
 
    }); 
 
} 
 

 
document.body.innerHTML = 'Matcher: ' + processMatcher('1/2/3-abc') + '</br />'; 
 
document.body.innerHTML += 'Replacer: ' + processReplacer('1/2/3-abc');