我需要在[
]
括号内获取GUID。以下是示例文本:
AccommPropertySearchModel.AccommPropertySearchRooms [6a2e6a9c-3533-4c43-8aa4-0b1efd23ba04] .ADTCount
我需要使用正则表达式使用JavaScript,但到目前为止,我失败了。知道如何检索这个值吗?
答案 0 :(得分:15)
以下正则表达式将匹配[8chars]中的GUID - [4chars] - [4chars] - [4chars] - [12chars]格式:
/[a-f0-9]{8}(?:-[a-f0-9]{4}){3}-[a-f0-9]{12}/i
您可以使用以下函数在方括号内找到GUID:
var re = /\[([a-f0-9]{8}(?:-[a-f0-9]{4}){3}-[a-f0-9]{12})\]/i;
function extractGuid(value) {
// the RegEx will match the first occurrence of the pattern
var match = re.exec(value);
// result is an array containing:
// [0] the entire string that was matched by our RegEx
// [1] the first (only) group within our match, specified by the
// () within our pattern, which contains the GUID value
return match ? match[1] : null;
}
请参阅运行示例:http://jsfiddle.net/Ng4UA/26/
答案 1 :(得分:4)
这应该有效:
str.match(/\[([^\]]+)\]/)
没有正则表达式的版本:
str.substring(str.indexOf('[') + 1, str.indexOf(']'))
我会使用正则表达式,但使用第二个版本可能更方便。
答案 2 :(得分:2)
这适用于测试GUID
var guid = '530d6596-56c2-4de7-aa53-76b9426bdadc'; // sample GUID
var regex = /^[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}$/i; // validate 8-4-4-4-12
var addDate = function() {
var newDate = new Date();
var setGUIDtime = newDate.toString();
return setGUIDtime;
}; // add date
console.log(guid.match(regex) + ', ' + addDate()); //display/print true GUID with date
答案 3 :(得分:1)
var testString = "AccommPropertySearchModel.AccommPropertySearchRooms[6a2e6a9c-3533-4c43-8aa4-0b1efd23ba04].ADTCount";
var regex = /\[([a-z0-9\-]+)\]/i;
document.write(testString + "<br/><br/>");
document.write(regex.exec(testString)[1]);
regex.exec(testString)[1]
是神奇发生的地方。
exec方法返回一个包含找到的组的数组,其中index 0是整个匹配,1是第一个组(组由括号定义)。
答案 4 :(得分:0)
这应该有效
(?<=\[).*?(?=\])
糟糕,Javascript does not support lookbehind。
所以只需使用(\[).*?(\])
并删除前导和尾随字符。
OR
只需使用(\[)(.*?)(\])
,第二场比赛就应该有你的GUID。