用 JavaScript 匹配精确的字符串

IT技术 javascript regex
2021-02-16 17:19:44

如何测试 RegEx 是否与字符串完全匹配

var r = /a/;
r.test("a"); // returns true
r.test("ba"); // returns true
testExact(r, "ba"); // should return false
testExact(r, "a"); // should return true
5个回答

要么事先修改模式,使其只匹配整个字符串:

var r = /^a$/

之后检查模式是否与整个字符串匹配:

function matchExact(r, str) {
   var match = str.match(r);
   return match && str === match[0];
}
也请参阅下面的 svante 的回答,因为它解释了为什么会这样。
2021-05-10 17:19:44

以不同的方式编写您的正则表达式:

var r = /^a$/;
r.test('a'); // true
r.test('ba'); // false

如果您不使用任何占位符(正如“完全”似乎暗示的那样),那么字符串比较如何?

如果你使用的占位符,^$分别匹配开头和一个字符串的结尾。

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);
它可以简单地通过正则表达式来解决,这种方法成本很高,而且可能不太顺利。取决于输入。请考虑使用正则表达式。
2021-04-22 17:19:44

根据现代 javascript 标准,这是 (IMO)迄今为止最好的解决方案:

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
这是废话,和RegExp没有关系。如果您想测试是否str1完全匹配,这将如何解决这个问题/[a-z]{3}/
2021-04-16 17:19:44