我需要检查我的用户是否只在文本框中插入了1个单词。 这个词可以包含标点符号。以下是一些可以插入和不插入的示例:
无法插入(多个单词):
可以插入(单个单词,句子结尾,句子开头):
我正在努力做我需要做的检查。我已经有了:
Regex.Matches(word, "\S+")
它会检查插入的单词数。但是我如何检查是否有标点符号?因为“.Start”返回2个单词,但这是有效的。
由于
答案 0 :(得分:2)
您可以使用\p{L}
类来允许字母,\p{P}
允许使用标点符号,并使用锚点来标记字符串的开头和结尾。可选组将确保我们捕获两端的标点符号:
^(?:\p{P}+\s*)*[\p{P}\p{L}]+(?:\s*\p{P}+)*$
请参阅demo和another demo on regexstorm(我必须添加\r?
以显示该网站上多行标记的所有匹配项。)
要排除单词中包含标点符号的情况(例如new!word
),请使用
^(?:\p{P}+\s*)*\p{L}+(?:\s*\p{P}+)*$
但是这将禁止使用连字符。
请参阅demo 2
答案 1 :(得分:1)
^((\W*\w+)|(\w+\W*))$
^
开始
\W*
仅允许从0到无限次的非单词字符
\w+
仅允许从1到无限次的单词字符
|
要交替
$
结束