我想正则表达式来有效的输入匹配到Tags
输入字段具有以下属性:如何改善此正则表达式?
- 1-5标签
- 每个标签长
- 有效的标签字符是1-30个字符[ A-ZA-Z0-9-]
- 输入和标签可以通过空白
的任何量例如被分离:
有效期:标签1标签2标签3,用破折号TAG4与 - 更多的破折号tAaG5与 - 混合大小写
这里是我迄今为止 - 它似乎工作,但我很感兴趣怎么可以简化或者如果它有任何重大缺陷:
\s*[a-zA-Z0-9-]{1,30}(\s+[a-zA-Z0-9-]{1,30}){0,4}\s*
// that is:
\s* // match all beginning whitespace
[a-zA-Z0-9-]{1,30} // match the first tag
(\s+[a-zA-Z0-9-]{1,30}){0,4} // match all subsequent tags
\s* // match all ending whitespace
预处理的输入,使空白问题容易不是一个选项(如修剪或添加空间)。
如果它很重要,这将用于JavaScript。任何建议,将不胜感激,谢谢!
这是一个整洁的网站 - 感谢参考 – 2010-03-24 22:56:53
@Michael - 不客气。并检查我的第二次尝试在这里。它更简单,我认为表现与你的第一个表达大致相同。 – 2010-03-24 23:12:37
@Steve:我感谢你的额外努力 - 不幸的是,最新的正则表达式并不限制在30个字符/每个 - 即。它匹配一个40char标签 – 2010-03-24 23:15:26