Javascript 字母数字字的正则表达式
我需要从字符串中查找并返回模式的第一个匹配项 示例:您好,我的SNO是05FK3NEK900058V,请添加它 预期输出:05FK3NEK900058V 模式匹配的条件Javascript 字母数字字的正则表达式,javascript,regex,Javascript,Regex,我需要从字符串中查找并返回模式的第一个匹配项 示例:您好,我的SNO是05FK3NEK900058V,请添加它 预期输出:05FK3NEK900058V 模式匹配的条件 数字和字母的组合 字符长度介于12到16之间 我可以使用正则表达式吗?还是需要循环使用单词 我试过了,但没用 const regex = /\b^(?!\d*$|[a-zA-Z]*$)[a-zA-Z\d]{12,16}$\b/gm; const str = `hello my SNO is 05FK3NEK900058V ple
const regex = /\b^(?!\d*$|[a-zA-Z]*$)[a-zA-Z\d]{12,16}$\b/gm;
const str = `hello my SNO is 05FK3NEK900058V please add it `;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
您可以使用单个正则表达式,如
/\b(?=[a-zA-Z\d]{12,16}\b)(?:[a-zA-Z]*\d|\d*[a-zA-Z])[a-zA-Z\d]*\b/
看
详细信息
-单词边界\b
-到下一个单词边界,必须有12到16个字母数字字符(?=[a-zA-Z\d]{12,16}\b)
-0+字母加数字或0+数字加字母(?:[a-zA-Z]*\d |\d*[a-zA-Z])
-0+字母数字字符[a-zA-Z\d]*
-单词边界\b
var str=“你好,我的SNO是05FK3NEK900058V,请添加它”;
var reg=/\b(?=[a-zA-Z\d]{12,16}\b)(?:[a-zA-Z]*\d |\d*[a-zA-Z])[a-zA-Z\d]*\b/;
var m=str.match(reg)| |[“”];
console.log(m[0])@bobble buble注释后的代码>
我认为这会起作用:
\w{12,16}
此外,如果符合单词的要求,也可以使用单词边界
\b\w{12,16}\b
@PeterM评论后更新:
最后一个版本更详细但更准确:
string=`Johannsonoff 111111111111 05FK3NEK900058Vf 05FK3NEK900058Vfaf48你好,我的SNO是fFK3NEK9000515 05FK3NEK9000515请添加它05fk3nek900058vfaffasf1654 ek900058vs11 ek90005fk3nek900058vs16 05fk3nek900058vs17`;
//返回一个数组,其中元素是12到16个字符之间的字符串。
const groupMathed=string.match(/\b\w{12,16}\b/g)
//返回数字[0-9]后跟字母字符或字母字符后跟数字的第一个元素。
常量alphanumericWord=groupMathed.find(e=>/[0-9]+[a-zA-z]+|[a-zA-z]+[0-9]+/.test(e))
console.log(字母数字字)
let str=“你好(加上一些长词)我的SNO是05FK3NEK900058V请添加它”;
常量reg=/\b[\w\d]{12,16}\b/g;
设m=str.match(reg);
if(类型m==“对象”&&m.length){
对于(var indexM=0;indexM //05FK3NEK900058V
这很好,但也会匹配长名称,例如:You was right@PeterM。我更新了我的答案。感谢您检测该问题。@Pablo感谢您的回答,一个小问题它只匹配数字字符串ie字符串='111111111111'而不是alphanumeric@Dibish我在“上一个版本更详细但更准确:”中更新了代码以修复该问题。感谢您检测并报告此问题。您是对的@bobble buble!我会测试和更新它!