Matching exact string with JavaScript

后端 未结 5 823
离开以前
离开以前 2020-11-28 10:49

How can I test if a RegEx matches a string exactly?

var r = /a/;
r.test(\"a\"); // returns true
r.test(\"ba\"); // returns true
testExact(r, \"ba\")         


        
相关标签:
5条回答
  • 2020-11-28 11:25

    If you do not use any placeholders (as the "exactly" seems to imply), how about string comparison instead?

    If you do use placeholders, ^ and $ match the beginning and the end of a string, respectively.

    0 讨论(0)
  • 2020-11-28 11:34
    var data =   {"values": [
        {"name":0,"value":0.12791263050161572},
        {"name":1,"value":0.13158780927382124}
    ]};
    
    //JSON to string conversion
    var a = JSON.stringify(data);
    // replace all name with "x"- global matching
    var t = a.replace(/name/g,"x"); 
    // replace exactly the value rather than all values
    var d = t.replace(/"value"/g, '"y"');
    // String to JSON conversion
    var data = JSON.parse(d);
    
    0 讨论(0)
  • 2020-11-28 11:37

    Write your regex differently:

    var r = /^a$/;
    r.test('a'); // true
    r.test('ba'); // false
    
    0 讨论(0)
  • 2020-11-28 11:39

    Either modify the pattern beforehand so that it only matches the entire string:

    var r = /^a$/
    

    or check afterward whether the pattern matched the whole string:

    function matchExact(r, str) {
       var match = str.match(r);
       return match && str === match[0];
    }
    
    0 讨论(0)
  • 2020-11-28 11:41

    Here's what is (IMO) by far the best solution in one line, per modern javascript standards:

    const str1 = 'abc';
    const str2 = 'abc';
    return (str1 === str2); // true
    
    
    const str1 = 'abcd';
    const str2 = 'abc';
    return (str1 === str2); // false
    
    const str1 = 'abc';
    const str2 = 'abcd';
    return (str1 === str2); // false
    
    0 讨论(0)
提交回复
热议问题