javascript - 字母数字单词的正则表达式以字母开头
问题描述
我需要从字符串中查找并返回模式的第一次出现。
示例:请找到我的型号 RT21M6211SR/SS 并保存
预期输出:RT21M6211SR/SS
模式匹配的条件
- 数字和字母的组合
- 字符长度在 6 到 14 之间
- 可能包含也可能不包含特殊字符,例如“-”或“/”
- 总是以字母开头
我试过了,但它不适用于第四个条件
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]);
解决方案
\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]);
但是由于匹配的字符串必须包含数字(并且不仅允许数字),因此您需要确保匹配的子字符串中也存在一个数字,您可以通过在匹配字母后立即对数字使用前瞻来完成开始:
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));
// ^^^^^^^^^^^^^^^^^^^^^^^
如果您想允许其他特殊字符,只需将它们添加到字符集中。
推荐阅读
- python - 寻找一种将矩形拟合到轮廓点的方法
- html - 如何添加悬停来交换 flexbox 中包含的图像?
- nebular - Akveo 星云角主题更新 5.0 错误
- jsp - JSP 文件不能在带有 Netbeans 9.0 的浏览器中运行
- javascript - 将一个函数中的数据传递给 React 组件中的另一个函数
- python - 替代基于条件创建新的熊猫系列?
- if-statement - 使用 awk 计算复杂条件
- javascript - 在页面滚动时打开上方的角度材料工具提示并避免工具提示被隐藏
- reactjs - 我在尝试创建反应应用程序时遇到问题 - 错误:找不到模块 './gitignore'
- node.js - ElasticSearch - 未刷新索引更改