如何测试只包含字母字符和短划线(-)[javascript]的字符串
how to test a string that contains only letter characters and dash(-) [javascript]
我需要为一个只包含字母字符和短划线(-)的单词创建一个正则表达式。它不能连续重复(例如--)。这是我的正则表达式函数:
var regex = new RegExp(/('w*'-{0,1})*/);
这个函数应该适用于像home-do
g这样的词,甚至类似home-dog-bird
的词,但不适用于类似home--dog
的词。我该如何测试?
您可以使用负前瞻来实现这一点。
var regex=new RegExp(/^('w|-(?!-))+$/);
这样做的目的是匹配只包含字母数字字符和-
的东西,前提是它后面没有另一个-
。
请参阅https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions有关javascript正则表达式的更多详细信息。
如果你反过来想(向后而不是向前),你可以生成一个正则表达式,断言每个匹配都以一个或多个单词字符开头,后面跟着零个或多个子单词对
https://regex101.com/r/xT7aT5/2
/^'w+(-'w+)*$/
但不确定这是否是最好的方法。我最喜欢皮的回答。
另一个没有前瞻性的:
/^(-?'w+)*-?$/
另一个查找单词的解决方案,对于单个短划线和单词是可选的。
function match(s) {
return !!s.match(/^'w+('-'w+)*$/g);
}
document.write(match('dog') + '<br>');
document.write(match('dog-cat') + '<br>');
document.write(match('dog-cat-fish') + '<br>');
document.write(match('dog-cat--fish') + '<br>');
你也可以试试这个:
var regex = new RegExp(/^('w*('-'w)'w*)*$/);
这将在正文中匹配。
/'w+(-'w+)+/
https://regex101.com/r/hU0xH7/1
试试这个正则表达式/^([^-]*-{0,1}[^-]*)$/
相关文章:
- 可变大小的JavaScript字符串如何成为基元类型
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何使用gump任务将html转换为javascript字符串
- 替换变量时,JavaScript字符串replace()不起作用
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 如何从django中的url解析javascript字符串
- 拆分javascript字符串以获得所需的值
- 使用Bootstrap'在Javascript字符串中的popover插件
- 如何替换javascript字符串中的前三个连字符
- 将JavaScript字符串转换为整数
- jquery/javascript字符串中的撇号
- 正在对java中的javascript字符串进行转义
- 如何在Javascript字符串中添加vaule
- Javascript:字符串中有效的基于数组的替换
- 具有负值的Javascript字符串.slice()
- javascript字符串替换$1(如果它是某个值)
- 将子函数的JavaScript字符串转换为实际函数
- JavaScript字符串中的换行符也保存为.txt
- 将Javascript字符串var传递给HTML href标记
- JavaScript 字符串字母和数字检查