0

split 関数を使用する代わりに、num * num * num の形式で eegular 式を使用したいと考えています。

ユーザーが 2 * 3 * 4 の形式、つまり anynumber * anynumber * anynumber でのみ入力できるように、入力を検証したいと考えています。分割機能を使用することで成功しました。Javascriptで正規表現を使用してこれを行う方法はありますか?

4

4 に答える 4

1

断片的には、少なくとも 1 つの数字と任意の数 (任意の数のスペース、アスタリスク、任意の数のスペース、そして別の数字) を含める必要があります。これを試して:

^\d+(\s*\*\s*\d)*$

は任意の\d+桁数 (負数と小数を除き、任意の数のゼロで始まる)、\s*ゼロ個以上の空白文字、および\*アスタリスク (バックスペースが前に付いているため、「ゼロ個以上」を意味すると混同されません) です。 . 括弧は末尾をグループ化するため、末尾に任意の数を含めることができます。最初と最後に他のランダムな文字が無視されないように、^とを追加する必要があります。$

スラッシュを使用して Javascript の正規表現を表すことができます。

var pattern = /^\d+(\s*\*\s*\d)*$/;
pattern.test("2 * 3 * 4");   // true
pattern.test("002  * 3* 04");   // true
pattern.test("2 # 3 # 4");   // false
pattern.test("2.0 * 3 * 4");   // false
pattern.test("-2 * 3 * 4");   // false

小数、負の数、先頭または末尾のスペース、またはその他の種類の機能が必要な場合は、パターンを少し調整する必要があります...しかし、うまくいけば、これで十分です!

于 2013-02-13T05:57:52.727 に答える
0

これはあなたが望むものになります:

^\d+\s*\*\s*\d+\s*\*\s*\d+$

これは、numberと。の間に0個以上のスペースがあるinteger * integer*integer*を許可します。

小数部を許可するには、次を使用します。

^\d+(\.\d+)?\s*\*\s*\d+(\.\d+)?\s*\*\s*\d+(\.\d+)?$

負の数の場合は、次のような-?オプションを許可するために追加します。-

^-?\d+(\.\d+)?\s*\*\s*-?\d+(\.\d+)?\s*\*\s*-?\d+(\.\d+)?$

^\s*-?\d+(\.\d+)?\s*\*\s*-?\d+(\.\d+)?\s*\*\s*-?\d+(\.\d+)?\s*$式の前後に0個以上のスペースを許可します。番号をキャプチャするには、キャプチャグループを使用します。

にとって^\s*(-?\d+(\.\d+)?)\s*\*\s*(-?\d+(\.\d+)?)\s*\*\s*(-?\d+(\.\d+)?)\s*$

$1$3および$53つの数字をそれぞれ与えます。

キャプチャが不要で、2つ以上の要素を許可する場合は、

-?\d+(\.\d+)?(\s*\*\s*-?\d+(\.\d+)?)+

方が良いだろう。

于 2013-02-13T06:06:19.737 に答える
0

次を使用してパターンを一致させることができます。

このパターンは、1桁の数字(数字、星、数字、星、数字)に一致します

^\d\*\d\*\d$

このパターンは、任意の長さの数字(数字、星、数字、星、数字)に一致します

^\d+\*\d+\*\d+$

\s識別子を使用して空白を許可することもできます。以下では、数字と記号の間に1つのスペースを使用できます。

^\d\s?\*\s?\d\s?\*\s?\d$
于 2013-02-13T06:00:01.807 に答える
0

多分試してください:

document.write("2 * 3 * 4".match(/[0-9]+[\s]?\*[\s]?[0-9]+[\s]?\*[\s]?[0-9]+/));
于 2013-02-13T05:57:33.950 に答える