我正在尝试测试字符串是否包含与number (0 to 9), space ( ), period (.) or negative sign (-)
下班后我最好的拍摄是:([\d\s]|[.-])
相反,它选择数字,空格,句点和减号。
然后,想法是使用.test()
检查它是否包含字母,其他字符或符号,例如:pattern.test(string)
我尝试使用否定的?!
,但仍然无法使其正常工作。
我在做什么不好?我是regex的新手,我正在尝试学习。谢谢
答案 0 :(得分:4)
您需要使用否定字符集,并将允许的字符放入该字符集中,从而匹配该字符集之外的所有字符:
const re = /[^0-9 .-]/;
const test = str => {
if (re.test(str)) {
console.log('Other characters are included');
} else {
console.log('All characters in string are permitted');
}
};
test('1234');
test('foo3');
答案 1 :(得分:0)
您可以使用否定前瞻:
(?!...)
-从表达式的当前位置开始,确保给定的模式不匹配。不消耗字符。
因此,您的最终表达可能像这样:(?![\d\s]|[.-]).
但是,当然,上一个答案更简单:[^0-9 .-]
我发现此工具对正则表达式非常有用:https://regex101.com 它有助于测试,并包含一些示例和解释。
屏幕截图:https://monosnap.com/image/YVBDVzEV8yT8Gic0av74nhW3jIWwyR.png