Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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_Regex Negation - Fatal编程技术网

Javascript 匹配带前导或尾随星号的行的正则表达式

Javascript 匹配带前导或尾随星号的行的正则表达式,javascript,regex,regex-negation,Javascript,Regex,Regex Negation,我需要匹配以单个星号字符开始或结束的每一行,中间没有任何其他星号 1.- foo BAR, FOO1* 2.- *FOO, bar% foo 3- *foo). BAR", fOo* 4.- **foo BAR foo 5.- *foo bar foo** 6.- foo bar * foo 7.- foo bar foo 我想匹配1到3号线,其他线我不匹配 我的建议是: ^[\*](?:[a-zA-Z0-9.!#$%&'+/=?^_`{|}~-\s])|^[a-zA-Z0

我需要匹配以单个星号字符开始或结束的每一行,中间没有任何其他星号

1.- foo BAR, FOO1*

2.- *FOO, bar% foo

3- *foo). BAR", fOo*

4.- **foo BAR foo

5.- *foo bar foo**

6.- foo bar * foo

7.- foo bar foo
我想匹配1到3号线,其他线我不匹配

我的建议是:

^[\*](?:[a-zA-Z0-9.!#$%&'+/=?^_`{|}~-\s])|^[a-zA-Z0-9.!#$%&'+/=?^_`{|}~-\s]+.\*$

但并非在所有情况下都有效。

为什么会出现这种并发症?尝试:

(^\*[^*]*\*?$|^[^*]*\*$)

基本上,您有两种情况
第一种情况
|
第二种情况
在上面的正则表达式中表示的匹配:

  • 字符串以星号
    ^\*
    开头,不包含星号
    [^*]*
    ,以一个或零个星号
    \*?$
    结尾
  • 字符串不包含任何星号
    ^[^*]*
    ,除了最后一个字符
    \*$

  • 为什么会如此复杂?尝试:

    (^\*[^*]*\*?$|^[^*]*\*$)
    

    基本上,您有两种情况
    第一种情况
    |
    第二种情况
    在上面的正则表达式中表示的匹配:

  • 字符串以星号
    ^\*
    开头,不包含星号
    [^*]*
    ,以一个或零个星号
    \*?$
    结尾
  • 字符串不包含任何星号
    ^[^*]*
    ,除了最后一个字符
    \*$

  • 在字符串中不需要任何星号的情况下-使用<代码>彼埃尔弗兰Cou-OIS回答< < /P>

    在星号中间接受星号的情况下,试试这个:

    var测试=[
    “foo-BAR,foo-1*”,
    “*FOO,bar%FOO”,
    “*foo.BAR”,foo*,
    “**foo-BAR-foo”,
    “*foo-bar-foo**”,
    “foo bar*foo”,
    “foo bar foo”];
    
    VaR ReX=/(^*(?!*))*((控制台。log(正则表达式:测试(t)));< /代码> < p>在字符串中间不需要任何星号的情况下,使用<代码>彼埃尔弗兰·Cou-OIS回答。< /P>

    在星号中间接受星号的情况下,试试这个:

    var测试=[
    “foo-BAR,foo-1*”,
    “*FOO,bar%FOO”,
    “*foo.BAR”,foo*,
    “**foo-BAR-foo”,
    “*foo-bar-foo**”,
    “foo bar*foo”,
    “foo bar foo”];
    
    var regex=/(^\*(?!\*).*console.log(regex.test(t)))
    correctedyou regExp不包含行num.3如果您检查了更新的行,它会包含行num.3,或者我缺少什么?我不应该删除前导的
    1.-
    部分?这是字符串的一部分?@Eraklon前导的“1.-,2.-…”部分不是字符串的一部分,是示例的数字行。它工作正常!!谢谢你非常多!!您在上面说:“我需要匹配以单个星号字符开头或结尾的每一行(原文如此)”,但是在您提供的示例中,我们可以推断出有更多的条件。说“我需要匹配以单个星号字符开头或结尾的每一行,中间没有任何其他星号”不是更正确吗?更正您的regExp不包含行num.3如果您检查了更新的行,它会包含行num.3,或者我遗漏了什么?我不应该删除前导的
    1.-
    部分?这是字符串的一部分?@Eraklon前导的“1.-,2.-…”部分不是字符串的一部分,是示例的数字行。它工作正常!!非常感谢您h!!您在上面说:“我需要匹配以单个星号字符开头或结尾的每一行(原文如此)”,但在您提供的示例中,我们可以推断出有更多的条件。说“我需要匹配以单个星号字符开头或结尾的每一行,中间没有任何其他星号,不是更正确吗看起来,如果在字符串的中间有一个有效的词,它应该失败。……@ Currtratra Na:你所提出的解决方案与第三行输入不匹配,即一个以星号开始和结束的行。@ YosefTukachinsky:中间的星号无效。参见上面的输入行6:没有匹配允许。输入如代码> *KKK*KK< /代码> s。应该是valid@YosefTukachinsky如果代码< *kkkk> <代码>无效,我想代码> *kkk*kk< /COD>无效。如果它在字符串的中间是有效的,那么它应该失败。@ Currina Tr.Na:您提出的解决方案不匹配第三行输入,即一行开始和结束。用星号。@ YosefTukachinsky:中间的星号无效。参见上面的输入行6:没有匹配允许。输入如<代码> *kkk*kk < /代码>应该是。valid@YosefTukachinsky:我们应该要求采购订单。由于
    **kkkk
    无效,我想
    *kkk*kk
    无效。我得到:
    “消息”:“SyntaxError:invalid regexp group”,
    。请注意,并非所有浏览器都支持Lookback。这不应在生产中使用。我得到:
    “消息”:“SyntaxError:invalid regexp group”,
    。请注意,并非所有浏览器都支持Lookback。这不应在生产中使用。