JavaScript RegExp 和 Join 模式生成

标签 javascript regex

我们有一个简单的基于 JS 的输入文本清理,可以使用 regExp 提取特定的标记。其格式为 <CHAR>-<NUMBER> 。其示例代码如下。试图扩展它以支持 <CHAR>/<NUMBER> 格式或者 。请告诉我如何将其添加到现有公式中,或者欢迎更好的想法。

示例:还应包含 MR/56743 或 MR56743 格式的 token 。

脚本的工作方式是:在文本框中输入任何内容,然后在焦点消失时,它会自动清理不匹配的内容,仅将匹配的标记作为逗号分隔值。

<html>
<body>
    <script type="text/javascript">
        var supported = ['ABCDE', 'XZY', 'IR'].sort();
        var pattern = new RegExp(supported.join("-\\d+|") + "-\\d+", "gi");

        function filter(raw_input) {
            var raw_text = document.getElementById("raw_text").value;
            document.getElementById("raw_text").value = raw_text.match(pattern);
        }
    </script>
    <div id="content" style="width:800px;margin:0 auto;text-align:left">
        Input the scramble for cleanup: </br>
        <textarea rows="10" cols="80" name="samplebox" id="raw_text" onchange="filter()"></textarea>
        </br>
    </div>
</html>
</body>

最佳答案

Token of the format MR/56743 or MR56743 should be included as well.

您的正则表达式中有 - 。它匹配一个 -。如果要匹配一组字符中的 1 个单个字符,则需要字符类 [...]。如果您想匹配一次或零次,请在其后使用 ? 量词。

使用

var supported = ['MR', 'ABCDE', 'XZY', 'IR'].sort();
var pattern = new RegExp(supported.join("[-/]?\\d+|") + "[-/]?\\d+", "gi");
//                                       ^^^^^           ^^^^^
function filter(raw_input) {
 var raw_text = document.getElementById("raw_text").value;
 var m = raw_text.match(pattern);
 if (m) {
   document.getElementById("raw_text").value = raw_text.match(pattern).join(" ");
 } else { document.getElementById("raw_text").value = ""; }
}
<div id="content" style="width:800px;margin:0 auto;text-align:left">
  Input the scramble for cleanup: </br>
  <textarea rows="10" cols="80" name="samplebox" id="raw_text" onchange="filter()"></textarea></br>
</div>

关于JavaScript RegExp 和 Join 模式生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35402806/

相关文章:

regex - vimscript 正则表达式字符串中的 + 符号是什么意思

javascript - 链接 onclick - 在执行 href 之前执行某些操作

javascript - QUnit:有没有在网站 DOM 树中不输出结果的官方解决方案?

javascript - new Function() 无法访问参数?

regex - 如何在 Perl 中的匹配大括号之间提取字符串?

php - Preg_Match 精确单词并从字符串文本中输出单词

javascript 正则表达式匹配第二个而不是第一个空格

php - 如何将javascript数组传递给php

javascript - (Javascript) 解构对象但对象有更改日期

javascript - 如何使用转义字符使用 javascript split 方法?