我有个问题。
我希望允许用户在瑞典语键盘上写下您能看到的所有内容(不使用字符映射或类似内容)。这意味着所有英文字母数字字符和 åäö
。允许的非字母数字字符是 §½!"@#£¤$%&{/()[]=}?+\´`^
等。
我的表达是:
[\wåäö§½!"@#£¤$%&/{()=}?\\\[\]+´`^¨~'*,;.:\-_<>|]
在 C# 中,它看起来像这样:
Regex allowedChars = new Regex("@[\\wåäö§½!\"@#£¤$%&/{()=}?\\\\[\\]+´`^¨~'*,;.:\\-_<>|]");
我检查它:
if (allowedChars.IsMatch(mTextBoxUserName.Text.Trim()))
问题是,如果我写了一个错误的字符和一个允许的字符,if 语句认为它匹配。我希望它与整个单词相匹配。我尝试在表达式的末尾添加一个“+”,但它从未匹配过...
有任何想法吗?
最佳答案
两件事情:
@
字符包含在字符串内部而不是字符串之前。这可能是复制粘贴错误,也可能不是。// put the @ outside the ""
new Regex(@"[\wåäö§½!""@#£¤$%&/{()=}?\\[\]+´`^¨~'*,;.:\-_<>|]");
// anchor using ^ and $, use []+ to ensure the string is ONLY made
// up from that character class. Also move the - to be the last symbol
// to avoid inadvertent ranging
new Regex(@"^[\wåäö§½!""@#£¤$%&/{()=}?\[\]+´`^¨~'*,;.:\\_<>|-]+$");
关于c# - C# 中的 RegEx 无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8564844/