split 関数を使用する代わりに、num * num * num の形式で eegular 式を使用したいと考えています。
ユーザーが 2 * 3 * 4 の形式、つまり anynumber * anynumber * anynumber でのみ入力できるように、入力を検証したいと考えています。分割機能を使用することで成功しました。Javascriptで正規表現を使用してこれを行う方法はありますか?
split 関数を使用する代わりに、num * num * num の形式で eegular 式を使用したいと考えています。
ユーザーが 2 * 3 * 4 の形式、つまり anynumber * anynumber * anynumber でのみ入力できるように、入力を検証したいと考えています。分割機能を使用することで成功しました。Javascriptで正規表現を使用してこれを行う方法はありますか?
断片的には、少なくとも 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
小数、負の数、先頭または末尾のスペース、またはその他の種類の機能が必要な場合は、パターンを少し調整する必要があります...しかし、うまくいけば、これで十分です!
これはあなたが望むものになります:
^\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
および$5
3つの数字をそれぞれ与えます。
キャプチャが不要で、2つ以上の要素を許可する場合は、
-?\d+(\.\d+)?(\s*\*\s*-?\d+(\.\d+)?)+
方が良いだろう。
次を使用してパターンを一致させることができます。
このパターンは、1桁の数字(数字、星、数字、星、数字)に一致します
^\d\*\d\*\d$
このパターンは、任意の長さの数字(数字、星、数字、星、数字)に一致します
^\d+\*\d+\*\d+$
\s識別子を使用して空白を許可することもできます。以下では、数字と記号の間に1つのスペースを使用できます。
^\d\s?\*\s?\d\s?\*\s?\d$
多分試してください:
document.write("2 * 3 * 4".match(/[0-9]+[\s]?\*[\s]?[0-9]+[\s]?\*[\s]?[0-9]+/));