正则表达式匹配带有星号的行尾

问题描述 投票:1回答:2

我需要匹配以星号开头或结尾的每一行。

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]+.\*$

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

javascript regex regex-negation
2个回答
2
投票

为什么这么复杂?试试:

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

请参见https://regex101.com/r/oOCSE5/6

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

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

0
投票

如果您在字符串中间也不需要任何星号,请使用\*$答案。

© www.soinside.com 2019 - 2024. All rights reserved.