0

提供された文字列が任意の数のスペース、その後にコンマ、その後に任意の数のスペースのみで構成されているかどうかを検出する必要があると思われるこのコードがあります。

if(str.match("/^[ ]*,[ ]*$/")) {
  //do something
}

また、次の文字列は「 , 」と一致しません。実際、スペースと 1 つのコンマのみで構成される文字列では、コンマの前後のスペースの数は一致しません。私は自分の構文と混同している可能性があり、クリックしていないだけだと思います。

また、正規表現をこれらに置き換えてみましたが、うまくいきませんでした:

"/^[\s]*[,][\s]*$/"
"/^[\s]*,[\s]*$/"
"/^[ ]*[,][ ]*$/"

何か案は?

4

5 に答える 5

3

正規表現を引用しないでください。実際の文字通りの正規表現テキストをそのように一致させようとしています。試す:

if (str.match(/^\s*,\s*$/))
{
  // whatever
}

任意の空白文字に一致するか、または

if (str.match(/^ *, *$/))

スペースのみに一致します。

于 2013-08-14T17:01:00.833 に答える
1

JavaScriptでは、正規表現を引用する必要はありません...

if(str.match(/^[ ]*,[ ]*$/)) {
 //do something
}
于 2013-08-14T17:01:49.083 に答える
0

正解は投稿済みですが、jQueryを使っている方はこちらも使えます

if ($.trim(str) === ",") {
  //do something
}

(スペースだけでなく、最初と最後からすべての空白を取り除きます)

于 2013-08-14T17:06:18.093 に答える
0

Javascript/jQuery で正規表現を引用符で囲むことはできません。引用符を削除すると、最初の試行で問題なく動作するはずです (この RegExr リンク: http://regexr.com?35v18で行います) 。

だから、あなたが必要とするのはstr.match(/^[ ]*,[ ]*$/)

于 2013-08-14T17:02:33.170 に答える
0

match正規表現の代わりに文字列を渡しているはずです。代わりに\sforも使用しますspace[ ]

if(str.match(/^[ ]*,[ ]*$/)) {
  //do something
}
于 2013-08-14T17:01:09.727 に答える