Javascript正则表达式连续两次避免相同的字符

时间:2013-11-06 12:57:50

标签: javascript regex

我需要一个正则表达式来避免连续两次使用相同的字符(@是字符),但可以在多个地方使用它们。 例如:

someword@someword is ok
someword@@someword is not ok
someword@someword@someword is ok too.

所以基本上这是我现有的正则表达式/^([a-zA-Z0-9'\-\x80-\xff\*\+ ]+),([a-zA-Z0-9'\-\x80-\xff\*\+\@ ]+)$/,其中第一个组是姓,第二个组是第一个名。我在名字组中引入了一个神奇的角色@,我将在保存时用空格替换。问题是我不能连续@符号。

4 个答案:

答案 0 :(得分:5)

查找任何重复的字符(重复一次):

/(.)\1/.test(string) // returns true if repeated characters are found

寻找重复的@:

string.indexOf('@@') !== -1 // returns true if @@ is found

答案 1 :(得分:3)

str.replace(/@@/g,'@')

通过'@'查找并替换'@@'的所有实例。如果您有超过2个连续的'@'符号,也可以使用。不能替换单个@符号或不符合@符号的内容。

编辑:如果你不需要替换但只是想测试它:

/@@/.test(str)

答案 2 :(得分:2)

str.replace(/(@{2,})/g,'@')

适用于任意数量的事件.. @@,@ @ @,@@ @等等

答案 3 :(得分:1)

试试这个正则表达式

/^(?!.*(.)\1)[a-zA-Z][a-zA-Z\d@]*$/

此正则表达式不允许连续