我想只允许/将文本区域中的特定单词/代码列入白名单。
我已经考虑过使用正则表达式,因此在textarea中更容易允许代码或某种产品密钥。
示例我想要在文本区域中仅允许使用2个特定的代码(仅允许使用特定的单词或代码):
0FAR12345H00123C00001P
0FAR54321H00321C00001P
所以我不能写到textarea(禁止写随机和随机代码):
嘿
34FAR43 ..
您只能在textarea中以(产品代码只能以...开头)
0FAR54321H00321C
0FAR12345H00123C
正则表达式示例:
/^(0FAR12345H00123C|0FAR54321H00321C|)[a-zA-Z0-9]{6}$/
我没有在Google中找到任何帮助来允许在textarea中使用特定的单词或代码,并阻止其他不在白名单中的随机文本或代码。
答案 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>
希望这会有所帮助,