Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式测试字符串匹配,仅接受1和点,但不接受11_Javascript_Regex - Fatal编程技术网

Javascript 使用正则表达式测试字符串匹配,仅接受1和点,但不接受11

Javascript 使用正则表达式测试字符串匹配,仅接受1和点,但不接受11,javascript,regex,Javascript,Regex,我想设置一个regex测试来测试字符串是否为1.1或1.1.1或1.1.1.1等 但我只知道这只接受1和 /^[1\.]+$/.test(string) 如果我测试1.11.1,它仍然返回true。尝试使用^1(?:\.1)*$: var输入=[“1”、“1.1”、“1.1.1.1”、“1.2.3.4”、“1.11”、“热狗”]; 对于(变量i=0;i”+结果); }如果字符串只接受零和一,但不能包含11,则可以使用负前瞻来断言not11 请注意,您不必转义character类中的 ^(?!

我想设置一个regex测试来测试字符串是否为1.1或1.1.1或1.1.1.1等 但我只知道这只接受1和

/^[1\.]+$/.test(string)
如果我测试1.11.1,它仍然返回true。

尝试使用
^1(?:\.1)*$

var输入=[“1”、“1.1”、“1.1.1.1”、“1.2.3.4”、“1.11”、“热狗”];
对于(变量i=0;i”+结果);

}
如果字符串只接受零和一,但不能包含
11
,则可以使用负前瞻来断言not
11

请注意,您不必转义character类中的

^(?!.*11)[.1]+$

const regex=/^(?。*11)[.1]+$/;
[
"1.1",
"1.1.1",
"1.1.1.1",
"...",
"..1111",
"1.1.....",
"...1..1.."
].forEach(s=>{
常数m=正则表达式测试;
如果(m){
log(`Match-->${s}`);
}否则{
log(`No match-->${s}`);
}
})
试试这个

^(?:1\.)+[1]$|^(1)$
如果您不想单独匹配
1

^(?:1\.)+[1]$

您可能想在这里考虑使用的另一种方法是构建DFA。由于正则表达式非常简单,因此不需要花费太多精力:

功能检查(a){
让isChecked=true;
设状态=0;
for(设i=0;iarr.forEach((a)=>console.log(check(a))
试试这个
^(?:1\)+[1.]$
@VishalSingh您的正则表达式也会匹配
1..
,@TimBiegeleisen,如果确定字符串将以
1
结尾,那么
[1.]
可以用
1
替换。这不起作用。如果我运行/1(?:\.1)*/.test('1.11.1'),它仍然返回true。@KennethChan请检查我更新的答案,其中包含更多示例。