在javascript中使用regex在字符串末尾找到匹配项

时间:2015-11-16 23:47:47

标签: javascript regex

我有一个ex "adlkup.db.com"字符串,我想验证" .com"的字符串。在字符串的末尾。

var x = "adlkup.db.com";

所以我正在尝试像

这样的东西
/.com$/.test(x)

并且.正在解释一些其他正则表达式,它找到一个单独的字符,除了换行符或行终止符

3 个答案:

答案 0 :(得分:3)

正则表达式中的句点与任何字符匹配。

要使其成为文字,您需要escape它:

/\.com$/.test('stackoverflow.com'); // true
/\.com$/.test('stackoverflowcom');  // false

或者,作为Racil Hilan points out in the comments,您还可以使用.lastIndexOf() method进行检查:

var string = 'stackoverflow.com';
string.lastIndexOf('.com') === string.length - 4; // true

或使用.substr() method

'stackoverflow.com'.substr(-4) === '.com'; // true

答案 1 :(得分:2)

在ECMAScript 6中,这是通过endsWith完成的:

x.endsWith(".com");

旧浏览器有polyfill

答案 2 :(得分:1)

阅读完评论后,我认为你可以比正则表达式更好地使用它:



var value1 = "adlkup.db.com";
var value2 = "adlkup.db.com.w3Schools";
var value3 = ".com";

document.write(value1 + " " + endWithCom(value1) + "<br/>");
document.write(value2 + " " + endWithCom(value2) + "<br/>");
document.write(value3 + " " + endWithCom(value3) + "<br/>");
               
               
function endWithCom(text){
  if(text.length < 5)
    return false;
  return (text.substr(-4) == ".com");
}
&#13;
&#13;
&#13;

您可以轻松将其转换为通用功能,这样您就可以将任何结尾传递给它:

&#13;
&#13;
var value1 = "adlkup.db.com";
var value2 = "adlkup.db.com.w3Schools";
var value3 = ".com";
var value4 = "adlkup.db.org";

document.write(value1 + " " + endWithButNotEqual(value1, ".com") + "<br/>");
document.write(value2 + " " + endWithButNotEqual(value2, ".com") + "<br/>");
document.write(value3 + " " + endWithButNotEqual(value3, ".com") + "<br/>");
document.write(value4 + " " + endWithButNotEqual(value4, ".org") + "<br/>");
               
               
function endWithButNotEqual(text, ending){
  if(text.length <= ending.length)
    return false;
  return (text.substr(-ending.length) == ending);
}
&#13;
&#13;
&#13;