正则表达式删除数字和单词字符串中的最后两个字母
regex to remove last two letters in a number and word string
我试图只匹配少数 ID,其中最后有一个或两个字母
示例:
ny12345d ---待匹配
ny12345dc -- 待匹配
ny12346T01 --不匹配
ny12346dfA --不匹配
ny12345 ------不匹配
到目前为止我想到了这个
/[^0-9]*$/g
你可以使用
(?<![a-zA-Z])[a-zA-Z]{1,2}$
详情:
(?<![a-zA-Z])
- 如果当前位置的左侧紧邻 ASCII 字母,则匹配失败的负面回顾
[a-zA-Z]{1,2}
- 处的一个或两个 ASCII 字母
$
- 字符串结尾。
捕获组方法:
(?:[^a-zA-Z]|^)([a-zA-Z]{1,2})$
参见 this regex demo。这里,(?:[^a-zA-Z]|^)
是一个非捕获组,匹配 ASCII 字母以外的字符或字符串的开头,([a-zA-Z]{1,2})$
类似于上述模式,将字母捕获到第 1 组中。
注意:如果要确保最后一两个字母前有数字,需要
(?<=\d)[a-zA-Z]{1,2}$
(?<=[0-9])[a-zA-Z]{1,2}$
\d([a-zA-Z]{1,2})$
[0-9]([a-zA-Z]{1,2})$
此处,\d
或 [0-9]
匹配任何数字,而 (?<=\d)
是一个 positive lookbehind,需要一个数字立即出现在当前位置左侧。
能否请您尝试以下。在线正则表达式演示是:Online regex demo
[^a-zA-Z][a-zA-Z]{1,2}$
解释: 只需检查行的最后是否有除字母以外的任何内容,后跟 1 或 2 个字母,然后匹配该字符串.
我试图只匹配少数 ID,其中最后有一个或两个字母
示例:
ny12345d ---待匹配
ny12345dc -- 待匹配
ny12346T01 --不匹配
ny12346dfA --不匹配
ny12345 ------不匹配
到目前为止我想到了这个
/[^0-9]*$/g
你可以使用
(?<![a-zA-Z])[a-zA-Z]{1,2}$
详情:
(?<![a-zA-Z])
- 如果当前位置的左侧紧邻 ASCII 字母,则匹配失败的负面回顾[a-zA-Z]{1,2}
- 处的一个或两个 ASCII 字母
$
- 字符串结尾。
捕获组方法:
(?:[^a-zA-Z]|^)([a-zA-Z]{1,2})$
参见 this regex demo。这里,(?:[^a-zA-Z]|^)
是一个非捕获组,匹配 ASCII 字母以外的字符或字符串的开头,([a-zA-Z]{1,2})$
类似于上述模式,将字母捕获到第 1 组中。
注意:如果要确保最后一两个字母前有数字,需要
(?<=\d)[a-zA-Z]{1,2}$
(?<=[0-9])[a-zA-Z]{1,2}$
\d([a-zA-Z]{1,2})$
[0-9]([a-zA-Z]{1,2})$
此处,\d
或 [0-9]
匹配任何数字,而 (?<=\d)
是一个 positive lookbehind,需要一个数字立即出现在当前位置左侧。
能否请您尝试以下。在线正则表达式演示是:Online regex demo
[^a-zA-Z][a-zA-Z]{1,2}$
解释: 只需检查行的最后是否有除字母以外的任何内容,后跟 1 或 2 个字母,然后匹配该字符串.