| 1234567891011121314151617181920212223242526272829303132333435363738 |
- XRegExp = require('xregexp')
- # A note about SAFE_REGEX:
- # We have to escape the escape characters because XRegExp compiles it first.
- # So it's equivalent to `^[\p{L}\p{N}\s\-_!&\(\)]+$]
- # \p{L} = any letter in any language
- # \p{N} = any kind of numeric character
- # https://www.regular-expressions.info/unicode.html#prop is a good resource for
- # more obscure regex features. standard RegExp does not support these
- SAFE_REGEX = XRegExp("^[\\p{L}\\p{N}\\s\\-_!'&\\(\\)]+$")
- EMAIL_REGEX = XRegExp("^[\\p{L}\\p{N}.+_-]+@[\\w.-]+$")
- SpamSafe =
- isSafeUserName: (name) ->
- SAFE_REGEX.test(name) && name.length <= 30
- isSafeProjectName: (name) ->
- if XRegExp("\\p{Han}").test(name)
- SAFE_REGEX.test(name) && name.length <= 30
- SAFE_REGEX.test(name) && name.length <= 100
- isSafeEmail: (email) ->
- EMAIL_REGEX.test(email) && email.length <= 40
-
- safeUserName: (name, alternative, project = false) ->
- return name if SpamSafe.isSafeUserName name
- alternative
-
- safeProjectName: (name, alternative) ->
- return name if SpamSafe.isSafeProjectName name
- alternative
-
- safeEmail: (email, alternative) ->
- return email if SpamSafe.isSafeEmail email
- alternative
- module.exports = SpamSafe
|