繁体   English   中英

VB.Net需要检查字符串是否只包含一个单词但可以包含标点符号

[英]VB.Net Need to check if a string contains only one word but can contain punctuation

我需要检查我的用户是否只在文本框中插入了1个单词。 这个词可以包含标点符号。 以下是可以插入和不插入的示例:

无法插入(多个单词):

  • “你好”

可插入(单个单词,句末,句子开头):

  • “字”
  • “结束。”
  • “。开始”
  • “!!它”
  • “结束!!”

我正在努力做我需要做的检查。 我已经有: Regex.Matches(word, "\\S+") ,用于检查插入的单词数。 但是我如何检查是否有标点符号? 因为“.Start”返回2个单词,但这是有效的。

谢谢

您可以使用\\p{L}类来允许字母, \\p{P}允许使用标点符号,并使用锚点来标记字符串的开头和结尾。 可选组将确保我们捕获两端的标点符号:

^(?:\p{P}+\s*)*[\p{P}\p{L}]+(?:\s*\p{P}+)*$

请参阅演示regexstorm上的另一个演示 (我必须添加\\r?以显示该站点上与多行标志的所有匹配)。

要排除单词里面有标点符号的情况(例如new!word ),请使用

^(?:\p{P}+\s*)*\p{L}+(?:\s*\p{P}+)*$

但是,这将不允许连字符的单词。

演示2

^((\W*\w+)|(\w+\W*))$

^开始
\\W*仅允许从0到无限次的非单词字符
\\w+只允许单词字符从1到无限次
| 交替
$ end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM