1. I'm not sure, but I think you can use all regular GREP codes inside this function. Do not use quotes around the expression, use slashes! (Why? Just a Javascript oddity ... perhaps a hack that dates back to the grey mist of JS development ...)
This should work -- but, rather then the above code, this is untested:
.. replace (/[- \/()\._]+/g. "_");
The OR-group inbetween the square brackets contain all characters you want to replace with an underscore: the hyphen (this must be the first character in the group, else it will be interpreted as a range of the characters on either side!), the space, the forward slash (this one is 'special' inside Javascript's replace function, so I think it needs an escape with a backslash!), parentheses, a period (not sure if this needs escaping -- in plain GREP it's the any-character wildcard, but perhaps it looses its magic inside an OR-group), and finally ... the underscore itself. Why?
Well, this replace string comes with a free bonus. Note the + sign after the OR-group. This means that an entire sequence of these characters will be replaced with a single underscore: "This is /a-/ test" will become "This_is_a_test". Adding the underscore itself to the find string means that it will also find the entire string "space ( underscore ) space" in "This (_) style" and, oh magic!, replace it immediately with a single underscore.
Just FYI, the lowercase 'g' after the closing slash is short for 'global', that is, globally replacing in this string. replace defaults to one replacement only (why? see above ...), and adding the 'g' ensures it keeps replacing until it doesn't find any matches anymore.
2. See point 1.
3. Erm, yes that's right, but you will need to check very carefully if nothing inside any of those Basic styles is overridden. You can apply a Basic style and add overrides to make it look like a Subheading, but that doesn't make it one. And for the next paragraph, you can apply a Basic style and add overrides to make it look like a plain text paragraph (etc.). It is a telltale signature of bad formatting ...