^.*(?=.*[0-9]).*$
我在某人的代码中看到了这个。这是一个有效的正则表达式吗?我知道?
应该在它可选之前使项目abc?
成为c
可选的。但是?
在捕获括号的开头。这意味着什么?
^.*(?=.*[0-9]).*$
我在某人的代码中看到了这个。这是一个有效的正则表达式吗?我知道?
应该在它可选之前使项目abc?
成为c
可选的。但是?
在捕获括号的开头。这意味着什么?
?
单独意味着:可选地匹配以前的内容。
但是,(? .. )
用于断言...
在您的情况下,(?=
是一个前瞻断言,意思是:如果只有(括号中的内容)遵循,则匹配。
参考
(?:……)
非捕获括号。对包含的模式进行分组,但不提供匹配文本的捕获。比捕获括号更有效。
(?> ... )
原子匹配括号。括号内的子表达式的第一个匹配是唯一尝试过的;如果它没有导致整体模式匹配,则将匹配搜索备份到“(?>”之前的位置
(?# ... )
自由格式评论 (?# comment )。
(?= ... )
前瞻断言。如果括号中的模式在当前输入位置匹配,但不推进输入位置,则为真。
(?!……)
负前瞻断言。如果括号中的模式在当前输入位置不匹配,则为真。不推进输入位置。
(?<= ... )
后视断言。如果括号中的模式匹配当前输入位置之前的文本,则为真,匹配的最后一个字符是当前位置之前的输入字符。不改变输入位置。由后视模式匹配的可能字符串的长度不能是无限的(没有 * 或 + 运算符。)
(?<! ... )
否定的后视断言。如果括号中的模式与当前输入位置之前的文本不匹配,则为真,匹配的最后一个字符是当前位置之前的输入字符。不改变输入位置。由后视模式匹配的可能字符串的长度不能是无限的(没有 * 或 + 运算符。)