[英]restrict user to enter more then 4 digit after and before comma using javascript
[英]Javascript/Jquery - restrict user to enter number before a letter
我有一个带有数字和两个字母“y”和“m”的字符串。 我想提取 y 和 m 之前的数字以获得年份值和月份值。 用户可以输入 8y6m 或任何内容。 我想要验证用户应该始终输入第一个数字,然后是 y,然后是数字,然后是 m。 所以这是我到目前为止写的验证 function:
function ValidateAge(text){
var reg = new RegExp(/^((\d+)(y|m)*)+$/);
return reg.test(text);
}
如果用户输入 1m6y 或 1y6m,则验证为真。
要做的事情:检查 y 的验证应该在 m 之前,即它应该是数字后跟 y,然后是数字后跟 m
首先,决定如何构造 RegExp object:
使用RegExp
构造函数:
new RegExp("^((\\d+)(y|m)*)+$")
或者使用 RegExp 文字:
/^((\d+)(y|m)*)+$/
但不要将这两者混为一谈。 这样做不会引发任何错误,反而会产生意想不到的结果。
我建议使用后者,因为在前者中,您必须对任何内容进行双重转义(注意\\
在d
之前)...
其次,如果要为值创建特定顺序,请不要使用带有乘数的组。
此外,倍增的捕获组将仅捕获最后一次迭代。
因此,您的 RegExp 应如下所示:
/^(\d+)y(\d+)m$/
或使月份可省略(可选):
/^(\d+)y(?:(\d+)m)?$/
或者,至少需要一个,使用零长度断言:
/^(?=.*(?:\d+y|\d+m))(?:(\d+)y)?(?:(\d+)m)?$/
以上两者都将捕获年份作为第一,月份作为第二,以备后用。
使用此处提供的解决方案,您可以验证您的年份和月份您之前的问题
然后您可以使用索引检查 y 是否在 m 之前
yIndex = yourString.indexOf("y");
mIndex = yourString.indexOf("m");
if(yIndex<mIndex) return true;
else return false;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.