如果输入的值不是字母数字字符和符号_.- @,我正在编写javascript脚本,它将发出警报。
我使用了以下表达式,但是令人担忧的是,我只需要出现一次@符号。我该怎么办?
!/^[ A-Za-z0-9_.-@]*$/
答案 0 :(得分:4)
您可以查找多个不是'@'的接受字符,然后只查找一个'@',然后再查找任意数量的接受字符。 \w
元字符还将替换您的A-Za-z0-9_
部分,因此您可以使用以下代码:
!/^[ \w.-]*@[ \w.-]*$/
答案 1 :(得分:-1)
如果可以完全不使用正则表达式来驱动,则可以使用includes来查看@
是否已经在字符串中。如果是这样,我们不允许它,否则我们会允许它。
如果字符不是@
,我们将使用正则表达式对其进行测试。
document.getElementById('input-test').addEventListener('keydown', e => {
let value = e.currentTarget.value
let key = e.key
if ((value.includes('@') && key == '@') || !!key.match(/[\sA-Za-z0-9_.\-@]/) === false) e.preventDefault()
})
<input type="text" id="input-test">