首页 > 解决方案 > 使用正则表达式名词过滤器输入特定代码

问题描述

我想在 textarea 中输入特定的产品代码,但我的代码只允许输入一个字母,如果我按另一个键,它会删除最后一个字母。

我希望用户只允许输入 regexNounFilters 中的这些代码

$('#toFile').on('keypress', function(e) {
  onInput(e);
});

const regexNounFilters = [<?php
  $data = $pdo->query("SELECT PRODUCT_CODE AS code, ENDING AS ec FROM test")->fetchAll(PDO::FETCH_OBJ);

  foreach ($data as $key) {
    $separator = ($key != end($data)) ? ", " : '';
    $std = "/^(" . $key->code . ")([a-zA-Z0-9]{" . $key->ec . "})$/";
    echo $std.$separator;
  }
?>];

//  const regexNounFilters = [/^(AAAB)([a-zA-Z0-9]{7})$/, /^(BBBBBC)([a-zA-Z0-9]{9})$/];

const extractNouns = string => string.split('\n').filter(line => regexNounFilters.some(re => line.trim().toUpperCase().match(re));

function onInput({
  target
}) {
  target.value = extractNouns(target.value).join('\n');
}

此代码必须只允许输入 7 位/字母长的 textarea AAAB 产品代码。和 9 位/字母长的 BBBBBC。

例子:

AAAB0000001
AAAB0000002
AAAB0000003
AAAB0000004
BBBBBC000000001
BBBBBC000000002
BBBBBC000000003

标签: javascriptjquery

解决方案


推荐阅读