我有这条线
{{1}}
一切正常,因为它允许我阻止初始空格,并允许在单词之间的那些,但我不能包含特殊字符(例如:'+'和%;)而不更改此属性。有人可以帮我吗 ?谢谢
答案 0 :(得分:1)
如果您想要的是空格分割,则应将\w
替换为\S
。
无论如何,\S*\w+
有点多余,您可以使用\S*\w
进行简化。
但是如果你想要更好的控制,为什么不写出整个范围并用\w
替换[a-zA-Z0-9_+&%]
?
答案 1 :(得分:0)
根据我的理解,如果你想要它找不到空格或特殊字符,只需删除\ S *这匹配任何其他包含特殊字符的空格。
\w+(\s?$|\s{1,}\w+)+
这意味着它会阻止正则表达式开头处的空格和特殊字符,但会忽略单词之间的特殊字符。因为我会将\ s替换为\ W的非单词字符。这将允许在单词之间使用空格和特殊字符。
\w+(\W?$|\W{1,}\w+)+
一个很好的网站来测试正则表达式,我能够确认这是regex101.com这是一个你可以测试正则表达式的地方,你输入的详细信息显示你的正则表达式会做什么当你输入它。您还可以包含示例文本,以查看正则表达式在文本中找到的内容。给出上述正则表达式:" !测试"只捕获了测试而忽略了两者!和测试前的空格。
答案 2 :(得分:0)
只有\S
与特殊字符匹配,\w
仅匹配[a-zA-Z0-9_]
。
所以你可以简单地将它们替换为
pattern="\S*\S+(\s?$|\s{1,}\S+)+"
但是那时有很多冗余。简化为
pattern="\S+(\s+\S+)*\s?"
或者如果真的唯一关心的事情是从\S
开始,那就去做
pattern="\S[\s\S]*" <!-- or -->
pattern="\S.*" <!-- not allowing linebreaks -->