[英]How can I build a regex to exclude all, except letters and numbers?
我需要从以下 function 返回一个带有“a1a”的过滤字符串。
我已经尝试了几个正则表达式,但没有。 最重要的是,我不能使用方法(挑战的一部分)。
let extractPassword = function(arr) {
let toString = "";
for (let i in arr) {
if ( arr[i] === /[A - Za - z0 -9]/) {
toString += arr[i];
}
console.log(toString);
}
};
extractPassword(["a", "-", "~", "1", "a", "/"]);
有任何想法吗?
谢谢你。
您的代码有一些问题。
删除正则表达式中的空格。 AZ
和A - Z
不是同一个意思。 第一个表示您要匹配 A 和 Z 之间的任何字母。 后者表示您要匹配A
、 -
或Z
。
使用正则表达式 object 上的test(...)
方法来确定字符串是否与正则表达式模式匹配。 字符串永远不能等于正则表达式 object。
toString
变量是一种常用的方法。 这使您的代码不太清晰。 我给它起了一个更合适的名字, extractedPw
,这更好地表明了它的用途。
你没有从你的方法中返回任何东西。 名称“提取密码”表明它将返回提取的密码。
let extractPassword = function(arr) {
let extractedPw = "";
for (let i in arr) {
if (/[A-Za-z0-9]/.test(arr[i])) {
extractedPw += arr[i];
}
console.log(extractedPw);
}
return extractedPw;
};
extractPassword(["a", "-", "~", "1", "a", "/"]);
那么,您只想获取与您的正则表达式匹配的字符并加入它们吗?
let extractPassword = arr => arr.filter(v => v.match(/[A-Za-z0-9]/)).join(''); let pw = extractPassword(["a", "-", "~", "1", "a", "/"]); console.log(pw);
如果您的意思是禁止filter
和join
,那么您可以轻松地重新发明它们:
let extractPassword = arr => { let r = ''; for (let v of arr) if (v.match(/[A-Za-z0-9]/)) r += v; return r; }; let pw = extractPassword(["a", "-", "~", "1", "a", "/"]); console.log(pw);
字符串 === 正则表达式不起作用。
而是使用 RegExp.prototype.test()
更多信息在这里: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
您的代码可能如下所示:
let extractPassword = function(arr) { let toString = ""; const regex = /[A-Za-z0-9]/; for (let i in arr) { if (regex.test(arr[i])) { toString += arr[i]; } } return toString; }; console.log(extractPassword(["a", "-", "~", "1", "a", "/"]));
创建一个名为 extractPassword 的 function,它接受一个字符数组(其中包括一些垃圾字符)并返回一个仅包含有效字符(a - z、A - Z、0 - 9)的字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.