我想测试一个字符串,该字符串应以任意数字的数字开头但后面没有点,所以我在jsfiddle中提出这些注册码,代码:
var startwith = "some string";
reg1 = new RegExp("^" + startWith + "[0-9]+(?!\\.)"),
reg2 = new RegExp("^" + startWith + "\d+(?!\\.)");
var text = "11.1";
console.log(reg1.test(text), reg2.test(text)); // result true, false
我从reg1
开始,但无法返回正确的结果,所以我只是尝试reg2
。令人惊讶的是,结果是正确的,但令我困惑的是两个regs返回不同的结果,而模式基本相同。有人有什么想法吗?所有的想法都表示赞赏。
答案 0 :(得分:1)
这应该有效:
var re = /^\d+(?!\.)\b/;
问题是,在没有单词边界的正则表达式中,正则表达式仅匹配1
的第一个11.1
,并且由于下一个不是点,它返回true。您需要强制匹配,直到达到字边界。
答案 1 :(得分:0)
从任何未跟随点的数字开始:
if (/^\d(?!\.)/.test(yourString)) {
// It matches!
} else {
// Nah, no match...
}