如何使用正则表达式从输入字符串中提取所有非字母数字字符?

时间:2019-03-22 17:03:44

标签: c# regex

目标:即使它们不是连续的,也要获取所有非字母数字字符。
设置:我在ASP.Net页面上有一个文本框,该文本框在TextChanged上的方法后面调用了C#代码。此事件处理程序针对正则表达式模式运行文本框输入。
问题:我无法创建提取所有非字母数字字符的正则表达式模式。

这是字符串输入:string titleString = @"%2@#$%^&";

这些是我尝试过的C#正则表达式模式:

string titlePattern = @"(\b[^A-Za-z0-9]+)";@#$%^&的结果(注意:如果我使用此输入字符串%2@35%^&,则上述正则表达式模式将标识@符号,然后标识{{ 1}}),但绝对不要以%^&开头)。
%的{​​{1}}结果
string titlePattern = @"(\A[^A-Za-z0-9]+)";的{​​{1}}结果

侧注::我也正在MS %循环的MS Visual Studio控制台应用程序中运行此命令,以将所有无效字符收集到集合中,并且我还测试了输入网站使用http://regexstorm.net/tester

1 个答案:

答案 0 :(得分:3)

对您的选择字符串使用替换方法。

编辑:仔细阅读后,我发现您需要相反的字符串。都是。

using System;
using System.Text.RegularExpressions;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string Source = @"H)*e/.?l\l{}*o ][W!~`@#""or^-_=+ld!";
            string Trash = @"[^a-zA-Z0-9]";
            string InvertedTrash = @"[a-zA-Z0-9]";

            Output(Source, Trash);
            Console.WriteLine($"{System.Environment.NewLine}Opposite Day!{System.Environment.NewLine}");
            Output(Source, InvertedTrash);
            Console.ReadKey();
        }
        static string TakeOutTheTrash(string Source, string Trash)
        {
            return (new Regex(Trash)).Replace(Source, string.Empty);
        }
        static void Output(string Source, string Trash)
        {
            string Sanitized = TakeOutTheTrash(Source, Trash);
            Console.WriteLine($"Started with: {Source}");
            Console.WriteLine($"Ended with: {Sanitized}");
        }
    }
}