而不是使用分割函数我想使用格式为num * num * num的eegular表达式。正则表达式,而不是使用格式为num * num * num的分割函数#num
我想验证一个输入,以便用户只能输入2 * 3 * 4的格式,即anynumber * anynumber * anynumber。我通过使用分割功能成功地完成了这项工作。有没有办法在Javascript中使用正则表达式来做到这一点?
而不是使用分割函数我想使用格式为num * num * num的eegular表达式。正则表达式,而不是使用格式为num * num * num的分割函数#num
我想验证一个输入,以便用户只能输入2 * 3 * 4的格式,即anynumber * anynumber * anynumber。我通过使用分割功能成功地完成了这项工作。有没有办法在Javascript中使用正则表达式来做到这一点?
也许尝试:
document.write("2 * 3 * 4".match(/[0-9]+[\s]?\*[\s]?[0-9]+[\s]?\*[\s]?[0-9]+/));
块子,你希望它至少有一个号码,然后任意数量的(任意数量的空格,星号,任意数量的空格,然后另一个号码)。尝试:
^\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
如果你想小数,负数,前导或尾随空格,或任何其他类型的功能,你需要调整模式有点...但希望这给你足够的继续!
出来有效期为其他特殊字符也是2#2#2 – 2013-02-13 06:17:12
@Ivin它还传递了 “2#柠檬!宝马”。您可能需要为'test'方法添加'^'和'$'才能使用Javascript。否则,它会找到第一个数字,决定你在圆括号中没有该位的实例,并且仍然返回true。 – 2013-02-13 06:23:57
可以使用匹配的模式如下:
这种模式的1位数字(数字,明星,数字,明星,数字)
^\d\*\d\*\d$
这种模式匹配任何长度的数字相匹配(数字,星号,数字,星号,数字)
^\d+\*\d+\*\d+$
您还可以使用\ s标识符来允许空格。下面让数字和符号之间一个空格:
^\d\s?\*\s?\d\s?\*\s?\d$
这将是你想要什么:
^\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+)?)+
会更好。
由于这是验证输入,我认为他不在乎结果是否可以被捕获 - 解决方案可以推广到任意数量的因素。 – nhahtdh 2013-02-13 06:30:44
' - ?\ d +(\。\ d +)?(\ s * \ * \ s * - ?\ d +(\。\ d +)?)+'会做那个 – 2013-02-13 06:34:53
我可以这样做'code'函数fun() { } \t \t var dpattern =/\ */i; \t \t \t \t var str = document.getElementById(“name”).value; \t \t var order = dpattern.exec(str); \t \t如果(顺序) \t \t { \t \t \t变种N = str.split( “*”); \t \t \t \t \t \t var a = n [0]; \t \t \t var b = n [1]; \t \t \t var c = n [2]; \t \t \t var d = a * b * c; \t \t \t提醒(d); \t \t \t \t \t \t \t}} 此 – 2013-02-13 05:54:14