繁体   English   中英

我如何构建一个正则表达式来排除除字母和数字之外的所有内容?

[英]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", "/"]);

有任何想法吗?

谢谢你。

您的代码有一些问题。

  1. 删除正则表达式中的空格。 AZA - Z不是同一个意思。 第一个表示您要匹配 A 和 Z 之间的任何字母。 后者表示您要匹配A-Z

  2. 使用正则表达式 object 上的test(...)方法来确定字符串是否与正则表达式模式匹配。 字符串永远不能等于正则表达式 object。

  3. toString变量是一种常用的方法。 这使您的代码不太清晰。 我给它起了一个更合适的名字, extractedPw ,这更好地表明了它的用途。

  4. 你没有从你的方法中返回任何东西。 名称“提取密码”表明它将返回提取的密码。

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);

如果您的意思是禁止filterjoin ,那么您可以轻松地重新发明它们:

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM