正则表达式在寻找Alpha字符时拆分数字字符串

Regex split string of numbers at finding of Alpha Characters

本文关键字:拆分 数字 数字字符 字符串 字符 寻找 Alpha 正则表达式      更新时间:2023-09-26

好的正则表达式是最让我困惑的东西之一。我试图在Javascript中做到这一点。我有一个搜索字段,用户将输入一系列字符。代码是:

999 mc111

还是

999 mc

总是有2个Alpha字符。但是开头可能有1-4个字符,结尾也可能有1-4个字符。

如果代码以Alpha字符结束,则运行某个ajax脚本。如果有数字+ 2个字母+数字....它运行一个不同的ajax脚本。

我的挣扎是我知道'd是2位数....但它可能并不总是2位数。

那么我的正则表达式代码将它分割成一个数组。什么的。

我认为正确的正则表达式(/^ ([0 - 9]+)([a-zA-z] +)([0 - 9] +)/美元

但是我如何确保它的中间只有2个alpha字符?

谢谢

您可以使用正则表达式/'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

要指定标记的确切数量,你必须使用括号{},所以如果你知道有2个字母标记你放{2},如果你知道可以有0-4个数字你放{0,4}

^([0-9]{0,4})([a-zA-z]{2})([0-9]{0,4})$

上面的RegEx计算如下:

  • 999mc -> true
  • 999mc111 -> true
  • 999mac111 -> false
  • mc -> true

通过将子表达式分组到括号

中来将表达式拆分为捕获组。

如下链接所示:

http://regexr.com?2vfhv

你得到这个:

3个捕获组:
第1组:([0-9]{0,4})
第二组:([a-zA-z]{2})
第3组:([0-9]{0,4})

正则表达式/^'d{1,4}[a-zA-Z]{2}'d{0,4}$/匹配1-4个数字的序列,后面跟着一系列2个alpha字符,后面跟着另一个0-4个数字的序列。

这个regex: /^'d{1,4}[a-zA-Z]{2}$/匹配1-4个数字的序列,后面只跟着2个alpha字符。

好,所以我并不关心中间的两个字符....真正重要的是第一组数字和最后一组数字(如果有的话)。

基本上我只需要处理数字。所以我这样做:

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];
}