Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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拆分模式)_Javascript_Regex - Fatal编程技术网

无法找出需求的正则表达式模式(javascript拆分模式)

无法找出需求的正则表达式模式(javascript拆分模式),javascript,regex,Javascript,Regex,我一直在尝试为以下字符串和需求找出一个正则表达式模式 this. i s.a.string .but. so is . this 预期结果: 1 - "this. i s" 2 - "a" 3 - "string .but. so is . this" 必须在上进行分离,但是,如果在之前或之后有一个空格,则它应该是前面结果的一部分 我一直在尝试以下方面的变化(结果) /[(^?=\.]+|[^?您可以尝试以下方法: 逻辑: 查找模式非空格后接后接非空格,并将第一个非空格替换为非空格 现在使

我一直在尝试为以下字符串和需求找出一个正则表达式模式

this. i s.a.string .but. so is . this
预期结果:

1 - "this. i s"
2 - "a"
3 - "string .but. so is . this"
必须在
上进行分离,但是,如果在
之前或之后有一个空格,则它应该是前面结果的一部分

我一直在尝试以下方面的变化(结果)


/[(^?=\.]+|[^?您可以尝试以下方法:

逻辑:
  • 查找模式
    非空格
    后接
    后接
    非空格
    ,并将第一个
    非空格
    替换为
    非空格
  • 现在使用
    |.
    进行拆分,以获得您的组列表
函数getGroups(str){ var replaceRegex=/(\S)(?=\.\S)/g; var g=str.replace(replaceRegex,“$1 |”)。拆分(“|”。”; 控制台日志(g) 返回g; } getGroups(“this.i s.a.string”); getGroups(“this.i s.a.string”); getGroups(“this.i 1.a.string”); getGroups(“127.0.0.1”);
尝试使用此正则表达式:

[^. ]+(( \.|\. | )[^. ]*)*

看看它是如何工作的。

使用
向前看
向后看
,拆分正则表达式将是:

(?<! )\.(?! )
  • 将分隔符替换为
    lookahead
    ,并将后面的组捕获替换为特殊分隔符
  • 由新的特殊分隔符拆分

  • 使用
    “this.i s.a.string”
    \w-不等同于“not space”,后者是“\s”@Rajesh与全局标志一起使用(
    /…/g
    ),这在一行程序中工作,而不是。谢谢。问题是js没有look-behind功能:)
    (?<! )\.(?! )
    
    var s = "this. i s.a.string .but. so is . this";
    s.replace(/([^ ])\.(?! )/g, "$1__special__").split("__special__")