如何打印满足正则表达式的所有字符?

时间:2010-08-16 16:03:04

标签: regex unicode

有没有办法打印出满足特定正则表达式的每个角色?

例如,我可以在Javascript中打印与正则表达式匹配的所有字符:

[A-Za-z_-]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|[\u10000-\uEFFFF]

取自Turtle specification

的示例 编辑:Toby和Peter Boughton提出的解决方案的JavaScript实现。

var out = "",
  str = "";
for (var i = 32; i < 983040; i++) {
  str = String.fromCharCode(i);
  if (str.match(/[A-Za-z_-]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|[\u10000-\uEFFFF]/)) {
    out += str;
  }
}
console.log(out);

1 个答案:

答案 0 :(得分:0)

我认为做你要求的唯一方法是逐个循环遍历所有可能的字符,并将每个匹配的“收集”到某种缓冲区中。