匹配任何字符后跟非数字

时间:2018-12-27 14:39:57

标签: javascript regex

我不擅长RegEx。尽管实现起来似乎很简单,但是我无法找出匹配任何字符后跟数字的方法。我正在尝试负面的前瞻。如果我使用任何单词,它都能按预期工作,但是如果我尝试将任何字符与方括号匹配,则失败。

var pattern = /sample(?!\d)/;
console.log(pattern.test("sample324")); //false
var pattern = /[a-z]+(?!\d)/;
console.log(pattern.test("sample324")); //true but expect false

谢谢。

2 个答案:

答案 0 :(得分:5)

问题是[a-z]+(?!\d)将使其与任何1+字符而不是数字相匹配,因此它将与您输入中的sampl匹配,从而在下一个位置满足非数字断言。

您可以在负前瞻的情况下使用此正则表达式:

/^(?!.+\d)/

如果在输入的任何字符后1个数字出现在输入的任何位置,则将导致匹配失败。

RegEx Demo

为获得更好的效率,您也可以使用此正则表达式:

/^(?!\D+\d)/

如果输入中有1个以上的非数字后跟数字 ,则会失败。

答案 1 :(得分:0)

我认为这可能有效:

var pattern = /[^0-9]/.test('mystring9')