我需要验证一个帐号。一个有效的数字可以是正好由11位数字组成的序列,也可以是由连字符分隔的3组数字(2位-3位-6位)
我试过这个:
/^([0-9]{11})|([0-9]{2}-[0-9]{3}-[0-9]{6})$/
但是它只适用于第二条规则。第一条规则不起作用,因为它允许超过11位数的数字
这就是我在js函数中使用regex的方式:
var re = /^([0-9]{11})|([0-9]{2}-[0-9]{3}-[0-9]{6})$/;
if (re.test(txtNumber.value)==true) {
return 1;
}
else {
alert("Invalid Account Number");
return 0;
}
任何建议或指导将不胜感激
有效数字:
12345678912(11位)
12-345-678912 (11用连字符分隔的数字)
无效号码:
1223(少于11位)
111111(超过11位)
123-23-678912 (11位,但未正确分隔,应为2位-3位-6位)
因为|
regex运算符优先级最低,所以应该这样写:
/^(?:[0-9]{11}|[0-9]{2}-[0-9]{3}-[0-9]{6})$/
... 所以交替模式被绑定到字符串的开头和结尾。
在代码中,模式会检查字符串开头的11位序列,或结尾的“两位、连字符、三位、连字符、六位”序列,但不会真正将规则绑定到两端。这很容易证明:
var patt = /^([0-9]{11})|([0-9]{2}-[0-9]{3}-[0-9]{6})$/;
patt.test('acdbdfdsfsf22-333-666666'); // true
作为旁注,由于您不需要使用该分组表达式捕获任何内容,因此我用?:
。实际上,它还可以进一步优化:
/^[0-9]{2}(?:[0-9]{9}|-[0-9]{3}-[0-9]{6})$/
... 你的选择越少越好。但在这种情况下,我想这真的没什么关系。
简而言之,这两种模式可以说明问题:
/^a|b$/
这读作“匹配字符串开头的
a
,或字符串结尾的b
”。
/^(?:a|b)$/
其内容为“匹配字符串的
开头
,后跟a
或b
,后跟字符串的结尾
”。
假设我有两个不同的模型和表,分别名为和。 正如你所知laravel使用模型来管理身份验证。但是因为我有两个不同的模型,我想可以分别管理它们。 我使用laravel 5.4,我不知道如何能做到这一点。
我正在尝试使用正则表达式和PHP进行用户名验证。要求是: < li >没有空格 < li >仅小写字母和数字 < li >除了(.)、(-)、(_)以及用户不能同时使用两个或多个特殊字符 < li >用户名不应以特殊字符开头 < li >最小长度6,最大长度25 这就是我到目前为止所做的
我想要一个用于手机号码验证的正则表达式。regex模式必须只在开头接受,空格(或)只能在国家代码之后(仅一次)。国家代码后只允许有10位数字。国家代码应该是可选的。如果国家代码不存在,它应该只接受10位数字。Regex应该防止任何无效的数字,比如(或)。 正则表达式应该接受这样的数字 1 8087339090 91 8087339090 912 8087339090 8087339090 0808
我随身携带一些信用卡号码,希望通过以下规则验证它们。 ►必须只包含数字(0-9) ► 它可以有4个一组的数字,由一个连字符“-”分隔 ► 它不能有4个或更多连续重复的数字 ►它可以包含没有任何空格的精确数字 输入: > 61234-567-8912-3456 4123356789123456 5133-3367-8912-3456 输出: > 有效的 无效(因为卡号没有分成4个相等的组) 有效 无
我正在编制一份登记表。它具有以下要求: 可以包含大写字母、大写字母、数字和字符集 不能包含空格 长度从5个字符到16个字符 我会像这样检查弦。 现在有两个问题我可以进入空间,虽然我不应该。我可以使用列出的字符以外的字符。我怎么解决这个?
问题内容: 我试图在Web应用程序中验证公司名称,并且使用此正则表达式模式 上述模式将拒绝值 10004 Estates Limited 但是如果我提出0-9,那么模式变成 然后就可以了。正则表达式和模式是新手,但我知道我应该使用更多它,因此我想对此进行澄清。谢谢。 问题答案: 是字符类中的一个特殊字符,因此是歧义的,可能会赋予和和含义,因此本质上是字符。 要在字符类中包含连字符减号,您必须将其转