2

我有一个像 url params 这样的字符串。如果保险参数在字符串中只出现一次,我想获得保险价值。

例如:

1.以下字符串应该产生结果:false

?LastName=abc&FirstName=xyz&insurance=2&insurance=3&insurance=4&insurance=5&BirthDate=01-01-2000

2.以下字符串应该产生结果:2 (因为只有一个保险)

?LastName=abc&FirstName=xyz&insurance=2&BirthDate=01-01-2000

我怎样才能在 JavaScript / jQuery 中做到这一点

我感谢每一个答案。谢谢

4

2 回答 2

4

这是一个可以执行您想要的功能

function checkInsurance( queryString ) {
    // a regular exression to find your result
    var rxp = /insurance=(\d+)/gi
    if( !queryString.match( rxp ) || queryString.match( rxp ).length !== 1 ) {
        // if there are no matches or more than one match return false
        return false;
    }
    // return the required number
    return rxp.exec( queryString )[1];
}
于 2011-03-05T10:57:10.600 回答
1

为@meouw +1 - 巧妙的解决方案!

另一种方法是使用 string.split。以下实现对于您正在搜索的参数及其值(即任何字符串)是灵活的。

function getUniqueParam (query, paramName) {
    var i, row, result = {};

    query = query.substring(1);
    //split query into key=values
    query = query.split('&');


    for (i = 0; i < query.length; i++) {
        row = query[i].split('=');

        // if duplicate then set value to false;
        if(result[row[0]]) {
            result[row[0]] = false;
        }
        else {
            result[row[0]] = row[1];
        }

    };

    // return the requested param value
    return result[paramName];
}


// Testing:

var a = '?LastName=abc&FirstName=xyz&insurance=2&insurance=3&insurance=4&insurance=5&BirthDate=01-01-2000';
var b = '?LastName=abc&FirstName=xyz&insurance=2&BirthDate=01-01-2000';

console.log(getUniqueParam(a, 'insurance'));
console.log(getUniqueParam(b, 'insurance'));
于 2011-03-05T11:15:15.310 回答