我需要从字符串中查找并返回模式的首次出现。
示例:请找到我的型号RT21M6211SR / SS并保存
预期输出:RT21M6211SR / SS
要匹配的模式的条件
我尝试过的方法,但不适用于第四种条件
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]);
答案 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));
// ^^^^^^^^^^^^^^^^^^^^^^^
如果要允许其他特殊字符,只需将它们添加到字符集中。