我正在努力让一些正则表达式工作,但我无法让捕获组分享(?)匹配。我希望如此,如果正则表达式匹配" id",它使用正则表达式匹配所有数字(17长),如果匹配" profile",它匹配字母数字。现在,当我尝试以下时,它可以工作,但配置文件的匹配是第3和第4,而不是第1和第2。希望这是有道理的。
这是一个正则表达式测试:https://regex101.com/r/wS2pL0/2
http://community.com/id/something123
http://community.com/profile/12345678901234567
(?:https?:\/\/)(?:www\.)?community\.com\/(?:(id)\/(\w{3,32})|(profile)\/(\d{17}))
答案 0 :(得分:0)
var regex = /(?:https?:\/\/)(?:www\.)?community\.com\/(id\/\w{3,32}|profile\/\d{17})/;
var string = document.getElementById('url').value;
var match = string.match(regex);
if (match) {
var mat = match[1].split('/');
if (mat[0] == 'profile' && mat[1].length === 17) {
console.log("true" + mat[1]);
} else {
console.log("false");
}
} else {
console.log('nothing');
}