正则表达式:排除数字,空格,加号和句点以外的所有内容

时间:2019-01-16 20:17:20

标签: javascript regex

我正在尝试测试字符串是否包含与number (0 to 9), space ( ), period (.) or negative sign (-)

不同的任何字符

下班后我最好的拍摄是:([\d\s]|[.-]) 相反,它选择数字,空格,句点和减号。

然后,想法是使用.test()检查它是否包含字母,其他字符或符号,例如:pattern.test(string)

我尝试使用否定的?!,但仍然无法使其正常工作。

我在做什么不好?我是regex的新手,我正在尝试学习。谢谢

2 个答案:

答案 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