2011-07-13 2 views

答えて

13

正規表現のソリューションを希望:

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); 
 
}

+0

ありがとうございます。清潔で記述的。 –

10

、正規表現は次のようになります。

/^@|,$/ 

それとも、単にこれを行うことができます:

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

はあなたに感謝。なぜ私は+の代わりに+を書いていたのですか? –

+2

'/^@ |、$ /'も同様です。 –

+1

明らかな正規表現の解決策がない場合は+1 – kapa

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

質問の「どちらかの」条件に対処する唯一の人であるため+1。 –

関連する問題