字母数字单词的正则表达式以字母开头

时间:2019-05-31 06:12:25

标签: javascript regex

我需要从字符串中查找并返回模式的首次出现。

示例:请找到我的型号RT21M6211SR / SS并保存

预期输出:RT21M6211SR / SS

要匹配的模式的条件

  1. 数字和字母的组合
  2. 字符长度在6到14之间
  3. 可能包含或不包含特殊字符,例如'-'或'/'
  4. 始终以字母开头

我尝试过的方法,但不适用于第四种条件

var str = 'Please find my model number RT21M6211SR/SS and save it';
var reg = /\b(\w|\d)[\d|\w-\/]{6,14}\b/;
var extractedMNO = '';
var mg = str.match(reg) || [""];
console.log('regular match mno', mg[0]);

1 个答案:

答案 0 :(得分:2)

\w匹配单词字符,其中还包括_和数字。如果只想匹配字母字符,请使用[a-z]来匹配第一个字符。

此外,由于要匹配6-14的长度,因此在匹配第一个字符后,应使用{5,13}重复字符集,以便重复的字符加上第一个字符的长度为6-14个字符。

var str = 'Please find my model number RT21M6211SR/SS and save it';
console.log(str.match(/\b[a-z][a-z0-9\/-]{5,13}/gi)[2]);

但是由于匹配的字符串必须包含数字(而不仅仅是 permit 个数字),因此您需要确保匹配的子字符串中也存在一个数字,您可以通过在开头匹配字母后立即使用数字的超前来完成:

var str = 'Please find my model number RT21M6211SR/SS and save it';
console.log(str.match(/\b[a-z](?=[a-z\/-]{0,12}[0-9])[a-z0-9\/-]{5,13}/gi));
//                            ^^^^^^^^^^^^^^^^^^^^^^^

如果要允许其他特殊字符,只需将它们添加到字符集中。

相关问题