Although my own answer fits my question, but the loan should still go to the other guys (I either supported or chose the right answer) because I edited my question after they answered.
=======================
Finally I came up with a clean regular solution (without any extra steps)
^(\S|\S.{0,254}\S)$
(although I don't understand why parentheses are important () )
The following test cases pass:
[TestMethod] public void CheckTitleTest() { // Empty Assert.IsFalse(CheckTitle(@"")); // A whitespace Assert.IsFalse(CheckTitle(@" ")); // Multiple whitespace only // http://msdn.microsoft.com/en-us/library/t809ektx.aspx Assert.IsFalse(CheckTitle(" \t \n \u1680")); // Leading whitespaces Assert.IsFalse(CheckTitle(" \tabc")); // Trailing whitespaces Assert.IsFalse(CheckTitle("abc\t ")); // Leading and trailing whitespaces Assert.IsFalse(CheckTitle(" \tabc\t ")); // Too long: 257 character Assert.IsFalse(CheckTitle(@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/*")); // A normal title Assert.IsTrue(CheckTitle(@"This is a normal title")); Assert.IsTrue(CheckTitle(@"This is a normal title.")); // 256 characters Assert.IsTrue(CheckTitle(@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")); // A very simple title Assert.IsTrue(CheckTitle(@"A")); Assert.IsTrue(CheckTitle(@"!")); Assert.IsTrue(CheckTitle(@"\")); } / ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / *")); [TestMethod] public void CheckTitleTest() { // Empty Assert.IsFalse(CheckTitle(@"")); // A whitespace Assert.IsFalse(CheckTitle(@" ")); // Multiple whitespace only // http://msdn.microsoft.com/en-us/library/t809ektx.aspx Assert.IsFalse(CheckTitle(" \t \n \u1680")); // Leading whitespaces Assert.IsFalse(CheckTitle(" \tabc")); // Trailing whitespaces Assert.IsFalse(CheckTitle("abc\t ")); // Leading and trailing whitespaces Assert.IsFalse(CheckTitle(" \tabc\t ")); // Too long: 257 character Assert.IsFalse(CheckTitle(@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/*")); // A normal title Assert.IsTrue(CheckTitle(@"This is a normal title")); Assert.IsTrue(CheckTitle(@"This is a normal title.")); // 256 characters Assert.IsTrue(CheckTitle(@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")); // A very simple title Assert.IsTrue(CheckTitle(@"A")); Assert.IsTrue(CheckTitle(@"!")); Assert.IsTrue(CheckTitle(@"\")); } / ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /")); [TestMethod] public void CheckTitleTest() { // Empty Assert.IsFalse(CheckTitle(@"")); // A whitespace Assert.IsFalse(CheckTitle(@" ")); // Multiple whitespace only // http://msdn.microsoft.com/en-us/library/t809ektx.aspx Assert.IsFalse(CheckTitle(" \t \n \u1680")); // Leading whitespaces Assert.IsFalse(CheckTitle(" \tabc")); // Trailing whitespaces Assert.IsFalse(CheckTitle("abc\t ")); // Leading and trailing whitespaces Assert.IsFalse(CheckTitle(" \tabc\t ")); // Too long: 257 character Assert.IsFalse(CheckTitle(@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/*")); // A normal title Assert.IsTrue(CheckTitle(@"This is a normal title")); Assert.IsTrue(CheckTitle(@"This is a normal title.")); // 256 characters Assert.IsTrue(CheckTitle(@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")); // A very simple title Assert.IsTrue(CheckTitle(@"A")); Assert.IsTrue(CheckTitle(@"!")); Assert.IsTrue(CheckTitle(@"\")); }
source share