Regex 正则表达式-允许在字符串的中间,而不是在结尾的中间段(和x x27;.x;27)。

Regex 正则表达式-允许在字符串的中间,而不是在结尾的中间段(和x x27;.x;27)。,regex,Regex,我使用正则表达式根据条件允许和拒绝字符串-- 目前,它允许在字符串中间以及结尾添加句点。 我只想拒绝字符串,如果在字符串结尾添加了句柄,但允许使用上面的正则表达式将其添加到中间。 For example, reject- Test.test1. Example. Test Test. test@example. exam.pl56e.hbhbh. 只需指定最后一个字符不能是句点 ^([\w\.,'()@&-]|\s)*[^.]$ 您可以在模式中使用单个字符类(将\s与上一个字符类合

我使用正则表达式根据条件允许和拒绝字符串--

目前,它允许在字符串中间以及结尾添加句点。

我只想拒绝字符串,如果在字符串结尾添加了句柄,但允许使用上面的正则表达式

将其添加到中间。
For example, reject-

Test.test1.
Example.
Test Test.
test@example.
exam.pl56e.hbhbh.

只需指定最后一个字符不能是句点

^([\w\.,'()@&-]|\s)*[^.]$

您可以在模式中使用单个字符类(将
\s
与上一个字符类合并)来简化模式,并使用

^([\w.,'()@&\s-]*[\w,'()@&\s-])?$

详细信息

  • ^
    -字符串的开头
  • ([\w,'()@&\s-]*[\w,'()@&\s-])?
    -可选序列(如果要匹配至少1个字符,请删除以下字符的
    )?
    ):
    • [\w,'()&\s-]*
      -0+字、
      @
      &
      、空格或连字符
    • [\w,,()&-]
      -一个单词,
      @
      &
      ,空格或连字符(但没有
      !)
  • $
    -字符串结尾
或者,查找版本:

^[\w.,'()@&\s-]*$(?<!\.)

这里,
(?!.\.$)
检查字符串是否在任何0+字符后以
结尾,如果是,则不返回匹配项。否则,字符串将与
[\w,'()@&\s-]*
模式匹配

我学到了一个很好的技巧,就是将某些本来可以使用的表达式以不匹配的方式单独放置在匹配表达式的前面,将它们列入黑名单

# sentences containing `foo` or `bar` but not the word `foobar`
^.*foobar.*$|(^.*foo.*$)|(^.*bar.*$)
无可否认,这有点……这里有点冗长:

因此,最好使用负回溯

^([\w\.,'()@&-]|\s)*$(?<!\.)

^([\w\,'()@&-]|\s)*$(?您可以使用负前瞻
(?!
)来断言后面的不是字符类中重复零次或多次以字符串末尾的点结尾的字符


使用ASTIX <代码> *>代码>匹配0次或多次。你可以使用<代码> \\(\)@(s)-**((或)*>((!)*.$)[\W','(@)和-s] -*$$ /代码>注意:

注意(请参阅)(在达到15个代表点数后,您有权进行向上投票)。这可能与您不想要的内容相匹配,例如

RedRover1
。这在原始正则表达式中不匹配,但在此处会匹配。
# sentences containing `foo` or `bar` but not the word `foobar`
^.*foobar.*$|(^.*foo.*$)|(^.*bar.*$)
^(?:[\w\.,'()@&-]|\s)*\.$|^([\w\.,'()@&-]|\s)*$
^([\w\.,'()@&-]|\s)*$(?<!\.)