我是regex的新手,我正在尝试搜索几个字符串。
我想检查字符串中是否存在某个字符,在本例中为":"(不带引号)。
如果:不存在于字符串中,它仍然会匹配,但如果:exist之后应该没有任何内容,只允许使用空格和新行。
我有这个模式,但它似乎不能像我想要的那样工作。
(.*)(:?s*n*)
谢谢。
如果我正确理解你的问题,^[^:]*(:s*)?$
让我们把它分解一下:
^
启动锚;如果没有这一点,匹配可以在每次看到另一个冒号或冒号后面的非空格时重新启动。
[^:]*
匹配任意数量的非冒号字符;这样,如果整个字符串都是非冒号字符,则该字符串将被视为有效匹配。
(:s*)?
如果在任何时候确实看到冒号,则以下所有字符必须为空白,直到字符串结束;分组parens和后面的CCD_ 5的作用是使其成为要么全有要么全无的条件语句。
$
端锚;如果没有这一点,regex就不会知道,如果它看到冒号,那么下面的空白必须持续到字符串的末尾。
这里有一个模式应该可以使用
/^([^:]*|([^:]*:s*))$/
您可以使用管道来管理替代
另一种方法是:
^[^:]*(|:[n]*)$
^[^:]*=>以除之外的任何内容开始
(|:[\n]*)$=>结束或者完全没有或者":"后跟换行符