开发者

Regex to ensure that \r\n is used

I'm look开发者_开发问答ing for a regex to ensure that my string only contains \r\n for newline and not \r or \n.

Sample text without errors:

Hello,\r\n\r\nWelcome on board of our brand-new cruise line.\r\nKind regards

Sample text with errors:

Hello\r\r\nWelcom on board of our brand-new cruise line.\nKind regards

Thank you in advance!

Kind regards, Danny


Try this regex:

(\r[^\n])|([^\r]\n)

if it matches, your text contains a loose \r or \n
Note: if you put this in string you need to escape the \r\n twice. or even better put it in @ string like this @"(\r[^\n])|([^\r]\n)"

Edit: example:

using System;
using System.Text.RegularExpressions;
public class Test
{
        public static void Main()
        {
                Regex r = new Regex(@"(\r[^\n])|([^\r]\n)");
                string[] Test = { "Hello,\r\n\r\nWelcome on board of our brand-new cruise line.\r\nKind regards", 
                                         "Hello\r\r\nWelcom on board of our brand-new cruise line.\nKind regards" };

                foreach(string t in Test)
                {
                        System.Console.Write("\"{0}\" ", t.Replace("\r", "\\r").Replace("\n", "\\n"));
                        if(r.IsMatch(t))
                                System.Console.WriteLine("Is not ok");
                        else
                                System.Console.WriteLine("Is ok");
                }
        }
}

Output:

"Hello,\r\n\r\nWelcome on board of our brand-new cruise line.\r\nKind regards" Is ok
"Hello\r\r\nWelcom on board of our brand-new cruise line.\nKind regards" Is not ok

Link: http://ideone.com/mauNN


I fixed the errors I had in my last example here is a test working example

using System;
using System.Text.RegularExpressions;
public class Test
{
        public static void Main()
        {
        Regex rxSingleCharNewLine = new Regex(@"\r(?!\n)|(?<!\r)\n",RegexOptions.Singleline);
        Regex rxNewLine = new Regex(@"\r\n",RegexOptions.Singleline);
                string[] Test = { "Hello,\r\n\r\nWelcome on board of our brand-new cruise line.\r\nKind regards", 
                                         "Hello\r\r\nWelcom on board of our brand-new cruise line.\nKind regards" };

                foreach(string t in Test)
                {
                        System.Console.Write("\"{0}\" ", t.Replace("\r", "\\r").Replace("\n", "\\n"));
                        if(!rxSingleCharNewLine.IsMatch(t) && rxNewLine.IsMatch(t))
                                System.Console.WriteLine("Is ok");
                        else
                                System.Console.WriteLine("Is not ok");
                }
        }
}

You can see it run here http://ideone.com/RDp0X

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜