Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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,我有以下regexp: /^(?:(?:>|<)?[a-zA-Z]+(?:(?:\+|-)\d*\.?\d*(?:em)?)?)(?:<[a-zA-Z]+(?:(?:\+|-)\d*\.?\d*(?:em)?)?)?$/ 我的问题是,如果第一个实例以一个开头,您可以在插入符号^之后使用一个非常早的负前瞻: (?!<[^<\s]*<) 排成一行: ^(?!<[^<\s]*<)(?:[<>]?[a-zA-Z]+(?:[-+]\d+

我有以下regexp:

/^(?:(?:>|<)?[a-zA-Z]+(?:(?:\+|-)\d*\.?\d*(?:em)?)?)(?:<[a-zA-Z]+(?:(?:\+|-)\d*\.?\d*(?:em)?)?)?$/

我的问题是,如果第一个实例以一个
开头,您可以在插入符号
^
之后使用一个非常早的负前瞻:

(?!<[^<\s]*<)
排成一行:

^(?!<[^<\s]*<)(?:[<>]?[a-zA-Z]+(?:[-+]\d+(?:\.\d+)?(?:em)?)?)(?:<[a-zA-Z]+(?:[-+]\d+(?:\.\d+)?(?:em)?)?)?$

^(?!只要替换
(?:(?:>| |)第二种方法在JS引擎中似乎不起作用,因为反向引用:。很好。我删除了第二种方法。JS中未捕获的捕获组似乎在其反向引用中初始化为零长度字符串。如果捕获第一个字符,可以使用第二种方法(不管是什么)在向前看中..这样捕获就永远不会为空。@不分心是的,您只需要一个负向前看
(?)?![@Undistraction不客气。您可能还想了解一下正则表达式。我现在知道答案,但为了让答案对其他人更有用,请添加对
(?!.@Undistraction-
(?!.*我删除了扩展版中额外的
,这使得
@revo有意义。谢谢。
<alpha<bravo
(?!<[^<\s]*<)
^
  (?!<[^<\s]*<) # We have this extra one
  (?:
    [<>]?
    [a-zA-Z]+
    (?:[-+]\d+(?:\.\d+)?(?:em)?)?
  )
  (?:
    <
    [a-zA-Z]+
    (?:[-+]\d+(?:\.\d+)?(?:em)?)?
  )?
$
^(?!<[^<\s]*<)(?:[<>]?[a-zA-Z]+(?:[-+]\d+(?:\.\d+)?(?:em)?)?)(?:<[a-zA-Z]+(?:[-+]\d+(?:\.\d+)?(?:em)?)?)?$