我想使用格式为num * num * num。
的eegular表达式,而不是使用split函数。我想验证输入,以便用户只能以2 * 3 * 4的格式输入,即任何数字* anynumber * anynumber。我通过使用split函数成功完成了这项工作。有没有办法在Javascript中使用正则表达式?
答案 0 :(得分: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
如果你想要小数,负数,前导或尾随空格或任何其他类型的功能,你需要稍微调整模式......但希望这足以让你继续下去!
答案 1 :(得分:0)
也许试试:
document.write("2 * 3 * 4".match(/[0-9]+[\s]?\*[\s]?[0-9]+[\s]?\*[\s]?[0-9]+/));
答案 2 :(得分:0)
您可以使用以下方式匹配模式:
此模式匹配一位数字(数字,星号,数字,星号,数字)
^\d\*\d\*\d$
此模式匹配任何长度的数字(数字,星号,数字,星号,数字)
^\d+\*\d+\*\d+$
您还可以使用\ s标识符来允许空格。以下允许数字和符号之间的单个空格:
^\d\s?\*\s?\d\s?\*\s?\d$
答案 3 :(得分:0)
这就是你想要的:
^\d+\s*\*\s*\d+\s*\*\s*\d+$
它允许整数*整数*整数,数字与*
之间的空格为零或更多。
要允许小数部分,请使用:
^\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*$
在表达式之前和之后允许零个或多个空格。要捕获数字,请使用捕获组:
^\s*(-?\d+(\.\d+)?)\s*\*\s*(-?\d+(\.\d+)?)\s*\*\s*(-?\d+(\.\d+)?)\s*$
$1
,$3
和$5
分别给出3个数字。
如果不需要捕获并且您想要允许两个或更多因素,
-?\d+(\.\d+)?(\s*\*\s*-?\d+(\.\d+)?)+
会更好。