允许/将特定字词/代码列入白名单

时间:2019-05-20 00:35:29

标签: javascript jquery

我想只允许/将文本区域中的特定单词/代码列入白名单。

我已经考虑过使用正则表达式,因此在textarea中更容易允许代码或某种产品密钥。

示例我想要在文本区域中仅允许使用2个特定的代码(仅允许使用特定的单词或代码):

  

0FAR12345H00123C00001P

     

0FAR54321H00321C00001P

所以我不能写到textarea(禁止写随机和随机代码):

  

     

34FAR43 ..

您只能在textarea中以(产品代码只能以...开头)

  

0FAR54321H00321C

     

0FAR12345H00123C

正则表达式示例:

/^(0FAR12345H00123C|0FAR54321H00321C|)[a-zA-Z0-9]{6}$/

我没有在Google中找到任何帮助来允许在textarea中使用特定的单词或代码,并阻止其他不在白名单中的随机文本或代码。

1 个答案:

答案 0 :(得分:1)

您可以进行onchange的检查,该检查将在对文本区域进行更改后触发。

const CODE = ['0FAR12345H00123C', '0FAR54321H00321C'];
const reg = /^([a-zA-Z0-9]{1,6})$/;
const reg2 = /^(0FAR12345H00123C|0FAR54321H00321C)([a-zA-Z0-9]{6})$/;

// Ensure values been inserted are in correct format
function onInput() {
  let values = event.target.value
    .split('\n')
    .map(v => {
      v = v.trim().toUpperCase();
      if (v.length <= 16) {
        if (CODE[0].substr(0, v.length) != v &&
          CODE[1].substr(0, v.length) != v) {
          v = v.substr(0, v.length - 1);
        }
      } else if (!v.substr(16, 22).match(reg)) {
        v = v.substr(0, v.length - 1);
      }
      return v;
    }).join('\n');

  event.target.value = values;
}

// Truncate any incomplete or incorrect values added to textarea onchange
function onChange() {
  let values = event.target.value
    .split('\n')
    .map(v => {
      v = v.trim().toUpperCase();
      if (!v.match(reg2)) {
        v = '';
      }
      return v;
    }).join('\n');
  event.target.value = values;
}
textarea {
  width: 400px;
  height: 100px;
}
<textarea oninput="onInput()" onchange="onChange()">
0FAR12345H00123C00001P
0FAR54321H00321C00001P
0FAR54321H00321C999999
</textarea>
<br/>
<button>Submit (Fake)</button>
<br/>
<em>Submit to display the onchange results</em>

希望这会有所帮助,