正则表达奇怪

Jul*_*old 4 c# regex

我有一个正则表达式来检查脚本语言中的有效标识符.它们以字母或下划线开头,后跟0个或更多字母,下划线,数字和$符号.但是,如果我打电话

Util.IsValidIdentifier( "hello\n" );
Run Code Online (Sandbox Code Playgroud)

它返回true.我的正则表达式是

const string IDENTIFIER_REGEX = @"^[A-Za-z_][A-Za-z0-9_\$]*$";
Run Code Online (Sandbox Code Playgroud)

那么"\n"如何通过?

ctn*_*ctn 5

所述$匹配线的端部.你需要使用\z匹配文本的结尾,以及RegexOptions.Multiline.您可能还希望使用\A而不是^匹配文本的开头,而不是匹配行的开头.

此外,您不需要$在字符类中转义.