RegEx:删除变量名中的无效字符

时间:2011-02-20 08:50:44

标签: regex character

我们假设我有这个变量名称: $$ 5 无功的 _ 的名称的 1 !!

现在我要删除无效字符(以粗体显示)。规则是: 允许的字符是a-z,A-Z,下划线和0-9但是(此处出现)不是第一个字符。 (预期结果:Var_Name1)

我目前分两步执行此操作: s/[^a-zA-Z_]//g而不是s/^[0-9]//g

是否可以使用一个RegEx执行此操作?

感谢和问候

2 个答案:

答案 0 :(得分:4)

这应该这样做:

s/^[^a-zA-Z_]+|[^a-zA-Z_0-9]+//g

此处g表示全局替换。

答案 1 :(得分:1)

您当前的方法删除了第一步中的所有数字,因此第二步是毫无意义的,结果将是Var_Name而不是预期的Var_Name1

您可以使用这样的模式来匹配要删除的内容:

^[^A-Za-z_]+|\W+

C#中的示例:

string name = "$$5Var#_#Name#1!!";
name = Regex.Replace(name, @"^[^A-Za-z_]+|\W+", String.Empty);
Console.WriteLine(name);

输出:

Var_Name1