我想从用户输入的字符串中提取用户名。问题是我不想只是简单地验证用户名,但我想向用户显示最终用户名是什么,即使用户输入了任何不允许的字符。
因此,例如,如果用户输入类似的&%$User)(Nam-e
内容,它将显示usernam-e
有类似的问题,答案正则表达式验证用户名,但不知何故,Invalid group
当我尝试将它与 a match
orexec
函数一起使用时,它给了我一个关于 node.js 的错误。
无论如何,大多数在线示例仅根据正则表达式验证用户名,但实际上并未提供适当用户名的结果。
规则如下:
- 仅包含字母数字字符、下划线、破折号和点。
- 下划线、破折号和点不能位于用户名的末尾或开头(例如
_username
/username_
)。 - 下划线、破折号和点不能相邻(例如
user_-.name
)。 - 下划线、破折号或点不能连续多次使用(例如
user__name
)。
到目前为止,我只能通过使用replace
函数次数来做类似的事情
value.replace(/[^\w-]*/g,'').replace(/^[^a-z]*/,'').replace(/-{2,}/g,'-').replace(/_{2,}/g,'_');
但这看起来不像是一个高效的代码,尤其是我实际上需要添加更多replace
函数来提取适当的用户名。
任何想法如何实现这一目标?