检查字符串中的特殊字符(/ * - + _ @& $#%)?

时间:2010-12-21 20:22:46

标签: c# regex

如何检查字符串以确保它只包含数字,字母或空格?

10 个答案:

答案 0 :(得分:59)

使用正则表达式的最简单方法:

Regular Expression for alphanumeric and underscores

在.net中使用正则表达式:

http://www.regular-expressions.info/dotnet.html

MSDN Regular Expression

Regex.IsMatch

var regexItem = new Regex("^[a-zA-Z0-9 ]*$");

if(regexItem.IsMatch(YOUR_STRING)){..}

答案 1 :(得分:53)

简单:

function HasSpecialChars(string yourString)
{
    return yourString.Any( ch => ! Char.IsLetterOrDigit( ch ) )
}

答案 2 :(得分:14)

string s = @"$KUH% I*$)OFNlkfn$";
var withoutSpecial = new string(s.Where(c => Char.IsLetterOrDigit(c) 
                                            || Char.IsWhiteSpace(c)).ToArray());

if (s != withoutSpecial)
{
    Console.WriteLine("String contains special chars");
}

答案 3 :(得分:11)

试试这种方式。

public static bool hasSpecialChar(string input)
    {
        string specialChar = @"\|!#$%&/()=?»«@£§€{}.-;'<>_,";
        foreach (var item in specialChar)
        {
            if (input.Contains(item)) return true;
        }

        return false;
    }

答案 4 :(得分:6)

String test_string = "tesintg#$234524@#";
if (System.Text.RegularExpressions.Regex.IsMatch(test_string, "^[a-zA-Z0-9\x20]+$"))
{
  // Good-to-go
}

可在此处找到一个示例:http://ideone.com/B1HxA

答案 5 :(得分:4)

如果可接受字符列表非常小,您可以使用这样的正则表达式:

Regex.IsMatch(items, "[a-z0-9 ]+", RegexOptions.IgnoreCase);

此处使用的正则表达式查找az和0-9中的任何字符,包括空格(方括号[]内的内容),这些字符中有一个或多个(+符号 - 您可以使用*为0或更多)。最后一个选项告诉正则表达式解析器忽略大小写。

如果不是字母,数字或空格,这将失败。要在祝福列表中添加更多字符,请将其添加到方括号内。

答案 6 :(得分:3)

使用下面的常规表达式来验证字符串,以确保它只包含数字,字母或空格:

[a-zA-Z0-9 ]

答案 7 :(得分:1)

在这里使用C#和Linq的好方法:

public static bool HasSpecialCharacter(this string s)
{
    foreach (var c in s)
    {
        if(!char.IsLetterOrDigit(c))
        {
            return true;
        }
    }
    return false;
 }

并像这样访问它:

myString.HasSpecialCharacter();

答案 8 :(得分:1)

您可以用布尔来做到。我最近一直在学习,发现我可以这样做。在此示例中,我正在检查用户对控制台的输入:

using System;
using System.Linq;

namespace CheckStringContent
{
    class Program
    {
        static void Main(string[] args)
        {
            //Get a password to check
            Console.WriteLine("Please input a Password: ");
            string userPassword = Console.ReadLine();

            //Check the string
            bool symbolCheck = userPassword.Any(p => !char.IsLetterOrDigit(p));

            //Write results to console
            Console.WriteLine($"Symbols are present: {symbolCheck}");     
        }
    }
}

如果字符串中存在特殊字符(symbolCheck),则返回“ True”;如果不存在,则返回“ False”。

答案 9 :(得分:0)

虽然有很多方法可以给这只猫剥皮,但我更喜欢将这些代码包装到可重用的扩展方法中,这样以后的工作就变得微不足道了。使用扩展方法时,您还可以避免使用 RegEx,因为它比直接字符检查慢。我喜欢使用 Extensions.cs NuGet 包中的扩展。它使这项检查变得如此简单:

  1. 将 [https://www.nuget.org/packages/Extensions.cs][1] 包添加到您的项目中。
  2. 在代码顶部添加“using Extensions;”。
  3. "smith23@".IsAlphaNumeric() 将返回 False 而 "smith23".IsAlphaNumeric() 将返回 True。默认情况下,.IsAlphaNumeric() 方法会忽略空格,但它也可以被覆盖,这样 "smith 23".IsAlphaNumeric(false) 将返回 False,因为空格不被视为字母表的一部分。
  4. 其余代码中的所有其他检查都只是MyString.IsAlphaNumeric()