模式正则表达式包含特殊字符

时间:2016-06-04 22:37:59

标签: regex html5

我有这条线

{{1}}

一切正常,因为它允许我阻止初始空格,并允许在单词之间的那些,但我不能包含特殊字符(例如:'+'和%;)而不更改此属性。有人可以帮我吗 ?谢谢

3 个答案:

答案 0 :(得分:1)

如果您想要的是空格分割,则应将\w替换为\S

无论如何,\S*\w+有点多余,您可以使用\S*\w进行简化。

但是如果你想要更好的控制,为什么不写出整个范围并用\w替换[a-zA-Z0-9_+&%]

Check out regular expressions for javascript

答案 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 -->