好的Regex对我来说是最令人困惑的事情之一。我试图在Javascript中这样做。我有一个搜索字段,用户将输入一系列字符。代码是:
999MC111
或只是
999MC
总共有2个Alpha字符。但是前面可能有1-4个字符,最后可能有1-4个字符。
如果代码ENDS带有Alpha字符,那么我运行某个ajax脚本。如果有数字+ 2个字母+数字....它运行不同的ajax脚本。
我的斗争是我知道\ d是2位数......但它可能不总是2位数。
那么我的正则表达式代码是将它拆分为数组。什么的。
我认为正确的正则表达式是(/ ^([0-9] +)([a-zA-z] +)([0-9] +)$ /
但是我如何确保其中间只有2个字母?
由于
答案 0 :(得分:1)
您可以使用正则表达式/\d$/
来确定它是否以小数结尾。
\d
匹配十进制字符,$
匹配字符串的结尾。 /
个字符包含表达式。
尝试逐行在javascript控制台中运行此功能。
var values = ['999MC111', '999MC', '999XYZ111']; // some test values
// does it end in digits?
!!values[0].match(/\d$/); // evaluates to true
!!values[1].match(/\d$/); // evaluates to false
答案 1 :(得分:1)
要指定令牌的确切数量,您必须使用括号{},因此如果您知道有2个字母标记放置{2}
,如果您知道可能有0-4位数{0,4}
^([0-9]{0,4})([a-zA-z]{2})([0-9]{0,4})$
1}}
([0-9]{0,4})
上述RegEx评估如下:
将表达式拆分为捕获组是通过将子表达式分组为括号来完成的
正如您在以下链接中所见:
你得到了这个:
3个捕获组:
第1组:([a-zA-z]{2})
第2组:([0-9]{0,4})
第3组:{{1}}
答案 2 :(得分:0)
正则表达式/^\d{1,4}[a-zA-Z]{2}\d{0,4}$/
匹配一系列1-4位数字,后跟一系列2个字母字符,后跟另一系列0-4位数字。
此正则表达式:/^\d{1,4}[a-zA-Z]{2}$/
匹配一系列1-4位数字,后跟2个字母字符。
答案 3 :(得分:0)
好吧所以我并不真正关心中间2个字符....真正重要的是第一组数字和最后一组数字(如果有的话)。
所以基本上我只需要处理数字。所以我这样做了:
var lead = '123mc444'; //For example purposes
var regex = /(\d+)/g;
var result = (lead.match(regex));
var memID = result[0]; //First set of numbers is member id
if(result[1] != undefined) {
var leadID = result[1];
}