正则表达式只匹配字符串中使用一次的符号

时间:2013-05-26 18:43:21

标签: javascript regex

也许这是一个简单的问题,但今天我有点困惑。

只有当符号%在字符串中出现一次时,我才需要正则表达式匹配..

例如:

/regexpForSymbol(%)/.test('50%') => true
/regexpForSymbol(%)/.test('50%%') => false

谢谢!

4 个答案:

答案 0 :(得分:10)

您可以使用:

^[^%]*%[^%]*$

锚点是为了确保每个角色都被覆盖,你可能已经知道[^%]做了什么。

答案 1 :(得分:8)

你走了。不要指望每个人都会一直为你制作这些。

^      # Start of string
[^%]*  # Any number of a character not matching `%`, including none.
%      # Matching exactly one `%`
[^%]*  # 
$      # End of string

答案 2 :(得分:2)

您不需要正则表达式。

function checkIfOne(string, char) {
    return string.split(char).length === 2;
}

用法:

var myString = "abcde%fgh",
    check = checkIfOne(myString, '%'); // will be true

答案 3 :(得分:1)

您可以使用match并计算结果数组:

str.match(/%/g).length == 1