正则表达式:0-9 A-Z a-z 或者这些字符 '!#$%&'*+-/=?^_`{|}~' 中的任意一个

4

我需要对字符串myString进行正则表达式匹配,只保留以下内容:

  • 0-9
  • A-Z或a-z
  • 这些字符之一:'!#$%&'*+-/=?^_`{|}~.

这是我的代码行:

new Regex("[a-zA-Z0-9]").IsMatch(myString);

到目前为止,我已经使用 [a-zA-Z0-9],这对前两个列表项很有效。 但是,我正在苦苦挣扎(而且我的头发很漂亮,我想保留它),因为元字符使我一无所获。

如果有任何帮助,将不胜感激。 谢谢。 戴夫


什么问题?你逃脱了吗? - leppie
我尝试使用 \ 转义它们,在运行时得到了无法识别的序列。 - Dave
4个回答

5

你好,如果你只想在字符串中保留指定的字符,那么这很简单。但是你需要匹配行首和行尾。

new Regex("^[a-zA-Z0-9'!#$%&'*+/=?^_`{|}~.-]*$").IsMatch(myString);

3
"[a-zA-Z0-9'!#$%&'*+/=?^_`{|}~.-]"

请检查减号(“-”)是否是 [] 序列中的最后一个字符


2

只要你转义了重要的字符,方括号内的元字符就没问题。此外,破折号必须是你序列中的最后一个。

new Regex("[a-zA-Z0-9'!#$%&'*+/=?^_`{|}~-]").IsMatch(myString);

不行。点号允许任何字符,因此也不起作用。 - Dave

1

尝试:

var re = "[a-zA-Z0-9" +  Regex.Escape("'!#$%&'*+-/=?^_`{|}~.") + "]";

Regex.Escape在字符类中不安全 - 它无法转义“-”:http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.escape.aspx。它还会转义不需要转义的字符,但这没关系。 - Kobi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接