正则表达式:检索[]括号内的GUID

时间:2011-12-03 14:36:40

标签: javascript jquery regex

我需要在[ ]括号内获取GUID。以下是示例文本:

  

AccommPropertySearchModel.AccommPropertySearchRooms [6a2e6a9c-3533-4c43-8aa4-0b1efd23ba04] .ADTCount

我需要使用正则表达式使用JavaScript,但到目前为止,我失败了。知道如何检索这个值吗?

5 个答案:

答案 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。