如何编写一个正则表达式以匹配以@开头或以,结尾的字符串?

10

我该如何编写一个正则表达式,用于匹配以@开头或以,结尾的字符串。我正在寻找使用JavaScript编写的代码。

3个回答

14

正则表达式的解决方案如下:

var rx = /(^@|,$)/;
console.log(rx.test(""));    // false
console.log(rx.test("aaa")); // false
console.log(rx.test("@aa")); // true
console.log(rx.test("aa,")); // true
console.log(rx.test("@a,")); // true

但为什么不直接使用字符串函数来获取第一个和/或最后一个字符:

var strings = [
  "",
  "aaa",
  "@aa",
  "aa,",
  "@a,"
];
for (var i = 0; i < strings.length; i++) {
  var string = strings[i],
    result = string.length > 0 && (string.charAt(0) == "@" || string.slice(-1) == ",");
  console.log(string, result);
}


10

如果要匹配以@开头或以逗号结尾的字符串,正则表达式应该是这样的:

/^@|,$/

或者,你可以这样做:

if ((str.charAt(0) == "@") || (str.charAt(str.length - 1) == ",")) {
    // string matched
}

1
'@test'.match(/^@.*[^,]$|^[^@].*,$/) // @test
'@test,'.match(/^@.*[^,]$|^[^@].*,$/) // null
'test,'.match(/^@.*[^,]$|^[^@].*,$/) // test,
'test'.match(/^@.*[^,]$|^[^@].*,$/) // null

+1 是因为您是唯一一个应对问题中的“要么-要么”条件的人。 - Tim Pietzcker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接